zoukankan      html  css  js  c++  java
  • android.app.Activity阅读摘要,有时候会不会需要保持一些现场数据呢? 想让系统帮你退出到后台或者挂掉前做些前置保持工作吗,重点参考吧:

    *
    * @param savedInstanceState If the activity is being re-initialized after
    * previously being shut down then this Bundle contains the data it most
    * recently supplied in {@link #onSaveInstanceState}. <b><i>Note: Otherwise it is null.</i></b>
    *
    * @see #onStart
    * @see #onSaveInstanceState
    * @see #onRestoreInstanceState
    * @see #onPostCreate
    */
    protected void onCreate(@Nullable Bundle savedInstanceState) {
    if (DEBUG_LIFECYCLE) Slog.v(TAG, "onCreate " + this + ": " + savedInstanceState);
    if (mLastNonConfigurationInstances != null) {
    mAllLoaderManagers = mLastNonConfigurationInstances.loaders;
    }
    if (mActivityInfo.parentActivityName != null) {
    if (mActionBar == null) {
    mEnableDefaultActionBarUp = true;
    } else {
    mActionBar.setDefaultDisplayHomeAsUpEnabled(true);
    }
    }
    if (savedInstanceState != null) {
    Parcelable p = savedInstanceState.getParcelable(FRAGMENTS_TAG);
    mFragments.restoreAllState(p, mLastNonConfigurationInstances != null
    ? mLastNonConfigurationInstances.fragments : null);
    }
    mFragments.dispatchCreate();
    getApplication().dispatchActivityCreated(this, savedInstanceState);
    if (mVoiceInteractor != null) {
    mVoiceInteractor.attachActivity(this);
    }
    mCalled = true;
    }

    /**
    * Same as {@link #onCreate(android.os.Bundle)} but called for those activities created with
    * the attribute {@link android.R.attr#persistableMode} set to
    * <code>persistAcrossReboots</code>.
    *
    * @param savedInstanceState if the activity is being re-initialized after
    * previously being shut down then this Bundle contains the data it most
    * recently supplied in {@link #onSaveInstanceState}.
    * <b><i>Note: Otherwise it is null.</i></b>
    * @param persistentState if the activity is being re-initialized after
    * previously being shut down or powered off then this Bundle contains the data it most
    * recently supplied to outPersistentState in {@link #onSaveInstanceState}.
    * <b><i>Note: Otherwise it is null.</i></b>
    *
    * @see #onCreate(android.os.Bundle)
    * @see #onStart
    * @see #onSaveInstanceState
    * @see #onRestoreInstanceState
    * @see #onPostCreate
    */
    public void onCreate(@Nullable Bundle savedInstanceState,
    @Nullable PersistableBundle persistentState) {
    onCreate(savedInstanceState);
    }

    /**
    * The hook for {@link ActivityThread} to restore the state of this activity.
    *
    * Calls {@link #onSaveInstanceState(android.os.Bundle)} and
    * {@link #restoreManagedDialogs(android.os.Bundle)}.
    *
    * @param savedInstanceState contains the saved state
    */
    final void performRestoreInstanceState(Bundle savedInstanceState) {
    onRestoreInstanceState(savedInstanceState);
    restoreManagedDialogs(savedInstanceState);
    }

    /**
    * The hook for {@link ActivityThread} to restore the state of this activity.
    *
    * Calls {@link #onSaveInstanceState(android.os.Bundle)} and
    * {@link #restoreManagedDialogs(android.os.Bundle)}.
    *
    * @param savedInstanceState contains the saved state
    * @param persistentState contains the persistable saved state
    */
    final void performRestoreInstanceState(Bundle savedInstanceState,
    PersistableBundle persistentState) {
    onRestoreInstanceState(savedInstanceState, persistentState);
    if (savedInstanceState != null) {
    restoreManagedDialogs(savedInstanceState);
    }
    }

    /**
    * This method is called after {@link #onStart} when the activity is
    * being re-initialized from a previously saved state, given here in
    * <var>savedInstanceState</var>. Most implementations will simply use {@link #onCreate}
    * to restore their state, but it is sometimes convenient to do it here
    * after all of the initialization has been done or to allow subclasses to
    * decide whether to use your default implementation. The default
    * implementation of this method performs a restore of any view state that
    * had previously been frozen by {@link #onSaveInstanceState}.
    *
    * <p>This method is called between {@link #onStart} and
    * {@link #onPostCreate}.
    *
    * @param savedInstanceState the data most recently supplied in {@link #onSaveInstanceState}.
    *
    * @see #onCreate
    * @see #onPostCreate
    * @see #onResume
    * @see #onSaveInstanceState
    */
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
    if (mWindow != null) {
    Bundle windowState = savedInstanceState.getBundle(WINDOW_HIERARCHY_TAG);
    if (windowState != null) {
    mWindow.restoreHierarchyState(windowState);
    }
    }
    }

    /**
    * This is the same as {@link #onRestoreInstanceState(Bundle)} but is called for activities
    * created with the attribute {@link android.R.attr#persistableMode} set to
    * <code>persistAcrossReboots</code>. The {@link android.os.PersistableBundle} passed
    * came from the restored PersistableBundle first
    * saved in {@link #onSaveInstanceState(Bundle, PersistableBundle)}.
    *
    * <p>This method is called between {@link #onStart} and
    * {@link #onPostCreate}.
    *
    * <p>If this method is called {@link #onRestoreInstanceState(Bundle)} will not be called.
    *
    * @param savedInstanceState the data most recently supplied in {@link #onSaveInstanceState}.
    * @param persistentState the data most recently supplied in {@link #onSaveInstanceState}.
    *
    * @see #onRestoreInstanceState(Bundle)
    * @see #onCreate
    * @see #onPostCreate
    * @see #onResume
    * @see #onSaveInstanceState
    */
    public void onRestoreInstanceState(Bundle savedInstanceState,
    PersistableBundle persistentState) {
    if (savedInstanceState != null) {
    onRestoreInstanceState(savedInstanceState);
    }
    }

    /**
    * Restore the state of any saved managed dialogs.
    *
    * @param savedInstanceState The bundle to restore from.
    */
    private void restoreManagedDialogs(Bundle savedInstanceState) {
    final Bundle b = savedInstanceState.getBundle(SAVED_DIALOGS_TAG);
    if (b == null) {
    return;
    }

    final int[] ids = b.getIntArray(SAVED_DIALOG_IDS_KEY);
    final int numDialogs = ids.length;
    mManagedDialogs = new SparseArray<ManagedDialog>(numDialogs);
    for (int i = 0; i < numDialogs; i++) {
    final Integer dialogId = ids[i];
    Bundle dialogState = b.getBundle(savedDialogKeyFor(dialogId));
    if (dialogState != null) {
    // Calling onRestoreInstanceState() below will invoke dispatchOnCreate
    // so tell createDialog() not to do it, otherwise we get an exception
    final ManagedDialog md = new ManagedDialog();
    md.mArgs = b.getBundle(savedDialogArgsKeyFor(dialogId));
    md.mDialog = createDialog(dialogId, dialogState, md.mArgs);
    if (md.mDialog != null) {
    mManagedDialogs.put(dialogId, md);
    onPrepareDialog(dialogId, md.mDialog, md.mArgs);
    md.mDialog.onRestoreInstanceState(dialogState);
    }
    }
    }
    }

  • 相关阅读:
    JavaScript对象继承的实现
    Redis资料
    Difference between LINQ to SQL and the Entity Framework
    闭包,懂不懂由你,反正我是懂了
    Castle资料
    csu 1242 碱基配对
    csu 1242 碱基配对——一个错误的解答
    [转载]zoj 分类
    计算素数
    魔方阵
  • 原文地址:https://www.cnblogs.com/sea520/p/4595281.html
Copyright © 2011-2022 走看看