如何判断View状态是否正在恢复

How to determine whether View state is being restored

在我的自定义视图中,我有一些字段我想恢复或创建新实例(如果它不会恢复)。令人惊讶的是我没有找到答案

例子class

class MyView extends View {
    private Calendar calendar;
    public MyView(Context context) {
        super(context);
        if(!restoring())
            calendar = Calendar.getInstance();
    }

    @Nullable
    @Override
    protected Parcelable onSaveInstanceState() {
        Bundle b = new Bundle();
        b.putParcelable("state", super.onSaveInstanceState());
        b.putLong("calendar", calendar.getTimeInMillis());
        return b;
    }

    @Override
    protected void onRestoreInstanceState(Parcelable state) {
        if (state instanceof Bundle) {
            Bundle b = ((Bundle) state);
            super.onRestoreInstanceState(b.getParcelable("state"));
            calendar = Calendar.getInstance();
            calendar.setTimeInMillis(b.getLong("calendar"));
        }
    }
}

我可以在自定义视图中进行一些检查以确定是否要恢复视图吗?

Activity中有Bundle savedInstanceState传递给onCreate()

我想过将静态布尔值设为静态布尔值,但行不通。

Is there some check inside custom view that I can make to determine whether view will be restored?

View class 中 不存在 这样的 API.

唯一给你的接缝是onRestoreInstanceState(Parcelable),它将"never be called with null state"。因此,如果您最终处于 onRestoreInstanceState(),那么您可以假设视图正在恢复。否则就是不是.