[英]Android: lifecycle, onRestoreInstanceState not called when Phone turned
[英]onRestoreInstanceState - Android View Lifecycle
我有一个名为RouteAutofillControl
的自定义View(Group)类,它基本上是一个EditText
,其中填充了从我当前的位置解析的地址。 AsyncTask
在视图构造函数中启动,完成后,我记得在成员变量中该任务已完成。
我还实现了对配置更改的状态保存,并且它可以工作。
我的问题是,此时尚未保留视图构造函数称为taskCompleted
成员变量,因此AsyncTask再次启动。
因此,我正在View生命周期中寻找一种称为AFTER onRestoreInstanceState
。
这是视图中的重要部分:
public class RouteAutofillControl extends LinearLayout {
private boolean taskCompleted;
public RouteAutofillControl(Context context, AttributeSet attrs, int defStyle) {
if(!taskCompleted) {
new FillRouteTask(location).execute();
}
}
@Override
public Parcelable onSaveInstanceState() {
final Parcelable superState = super.onSaveInstanceState();
SavedState savedState = new SavedState(superState);
savedState.taskCompleted = taskCompleted;
savedState.resolvedAddress = resolvedAddress;
return savedState;
}
@Override
public void onRestoreInstanceState(Parcelable state) {
Log.d(TAG, "onRestoreInstanceState");
SavedState savedState = (SavedState) state;
super.onRestoreInstanceState(savedState.getSuperState());
taskCompleted = savedState.taskCompleted;
resolvedAddress = savedState.resolvedAddress;
}
}
我没有找到有关查看生命周期方法的任何信息,我很感谢您提供的任何帮助或建议,以使它变得更好,欢呼:)
那不是最近,但我认为大多数情况仍然如此。
这里要保留的是onAttachedToWindow在父级的addView进程之后被调用,它将在其子级上调用restoreState方法。
因此,在您的情况下,我将把任务移到此回调中:
@Override
public void onAttachedToWindow() {
if(!taskCompleted) {
new FillRouteTask(location).execute();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.