Notes de base d'Android: Cycle de vie de l'activité onCreate () la différence entre un paramètre et deux paramètres

Cycle de vie de l'activité onCreate () la différence entre un paramètre et deux paramètres

	@Override
    protected void onCreate(Bundle savedInstanceState) {
    
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Log.i(TAG, "1、调用 onCreate(Bundle savedInstanceState) 方法,首次创建 Activity ");
    }
 	@Override
    public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
    
    
        super.onCreate(savedInstanceState, persistentState);

        Log.i(TAG,"调用 onCreate(Bundle savedInstanceState, PersistableBundle persistentState)");
    }

onCreate (Bundle savedInstanceState, PersistableBundle persistentState) est une nouvelle méthode fournie par 5.0. Avant la réécriture, vous devez définir un attribut pour l'activité dans le fichier de configuration AndroidManifest.xml: android: persistableMode = "persistAcrossReboots", afin que l'activité ait une capacité de persistance

	<activity
            android:name=".MainActivity"
            android:persistableMode="persistAcrossReboots">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

onCreate (Bundle savedInstanceState, PersistableBundle persistentState) sera utilisé avec deux autres méthodes:


Lors de la substitution de la méthode onCreate () à deux paramètres et de deux méthodes de collocation, on constate que les modificateurs de la méthode sont tous publics, tandis que les modificateurs d'un paramètre et de plusieurs méthodes de cycle de vie sont protégés.


	 /**onSaveInstanceState 使用情形
     * 1、点击home键回到主页或长按后选择运行其他程序
     * 2、按下电源键关闭屏幕
     * 3、启动新的 Activity
     * 4、横竖屏切换时,肯定会执行,因为横竖屏切换的时候会先销毁 Activity,
     *    然后再重新创建 重要原则:当系统"未经你许可"时销毁了你的 Activity,
     *    则onSaveInstanceState会被系统调用, 这是系统的责任,
     *    因为它必须要提供一个机会让你保存你的数据(你可以保存也可以不保存但是必须提供!)。
     */

    @Override
    public void onSaveInstanceState(Bundle outState, PersistableBundle persistentState) {
    
    
        super.onSaveInstanceState(outState);

        Log.i(TAG, "调用 onSaveInstanceState(Bundle outState, PersistableBundle persistentState) 方法");
    }


    /**onRestoreInstanceState
     *和onCreate同样可以从取出前者保存的数据:
     * 一般是在onStart()和onResume()之间执行!
     * 之所以有两个可以获取到保存数据的方法,是为了避免 Activity 跳转而没有关闭,
     * 然后不走onCreate()方法,而你又想取出保存数据
     */
    @Override
    public void onRestoreInstanceState(Bundle savedInstanceState, PersistableBundle persistentState) {
    
    
        super.onRestoreInstanceState(savedInstanceState, persistentState);

        Log.i(TAG,"调用 onRestoreInstanceState(Bundle savedInstanceState, PersistableBundle persistentState)");
    }

L'activité peut persister. Le paramètre PersistableBundle ajouté permet à ces méthodes de restaurer les données après l'arrêt du système et n'affecte pas nos autres opérations de sérialisation.

运行程序:
MainActivity: 1、调用 onCreate(Bundle savedInstanceState) 方法,首次创建 Activity 
MainActivity: 2、调用 onStart() 方法,将 Activity 显示给用户
MainActivity: 3、调用 onResume() 方法,使 Activity 位于前台;此时Activity 位于栈顶
OpenGLRenderer: Initialized EGL, version 1.4
按下home键:
MainActivity: 执行了 onPause() 方法
MainActivity: 执行了 onStop() 方法
打开程序:
MainActivity: 执行了 onRestart() 方法
MainActivity: 2、调用 onStart() 方法,将 Activity 显示给用户
MainActivity: 3、调用 onResume() 方法,使 Activity 位于前台;此时Activity 位于栈顶
退出程序:
MainActivity: 执行了 onPause() 方法
MainActivity: 执行了 onStop() 方法
MainActivity: 执行了 onDestroy() 方法
点击程序:
MainActivity: 1、调用 onCreate(Bundle savedInstanceState) 方法,首次创建 Activity 
MainActivity: 调用 onCreate(Bundle savedInstanceState, PersistableBundle persistentState)
MainActivity: 2、调用 onStart() 方法,将 Activity 显示给用户
MainActivity: 3、调用 onResume() 方法,使 Activity 位于前台;此时Activity 位于栈顶
退出程序:
MainActivity: 执行了 onPause() 方法
MainActivity: 执行了 onStop() 方法
MainActivity: 执行了 onDestroy() 方法

Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/drawababy/article/details/113681404
conseillé
Classement