繁体   English   中英

onRestoreInstanceState-Android视图生命周期

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM