《第一行代碼》2章 Activity生命週期理解

  1. 啓動模式 中singleTask  的理解,舉個例子,2個activity  firstActivity second Activity, 點一個切換到第二個,再點第一個切換到第一個,這個時候 firstActivity 是reStart, 而不創建,而secondActivity會銷燬,因爲它在棧的最上邊,firstActivity把它替換掉,所以就onDestroy;

    只要不再顯示就會執行onStop(),沒有銷燬就會經歷onRestart(),onStart()重新變得可見。

  2. 比較好的演示生命週期的例子,可以很明顯的看到各個活動的創建,停止,銷燬,重新啓動整個過程,只用一個過濾器就能區分。

    package com.example.activitytest;

    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;

    public class BaseActivity extends Activity {

        @Override
        protected void onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            Log.d("BaseActivity","onCreate"+getClass().getSimpleName());
            ActivityCollector.addActivity(this);//static 方法不用new 來實例化對象
        }
        
        @Override
        protected void onDestroy(){
            super.onDestroy();
            ActivityCollector.removeActivity(this);
            Log.d("BaseActivity","onDestroy"+getClass().getSimpleName());//顯示那個活動唄銷魂
        }
        @Override
        protected void onStop(){
            super.onStop();
            Log.d("BaseActivity","onStop"+getClass().getSimpleName());
        }
        @Override
        protected void onRestart(){
            super.onRestart();
            Log.d("BaseActivity","onRestart"+getClass().getSimpleName());
        }
        @Override
        protected void onStart(){
            super.onStart();
            Log.d("BaseActivity","onStart"+getClass().getSimpleName());
        }

    }

    讓其他Activity 都繼承BaseActivity,因爲其他的Activity都會super.onCreate(),super.onStop(),super.onDestroy(),就會先調用BaseActivity中的相關內容;

  3. 幾個小技巧:Log.d("BaseActivity","onCreate"+getClass().getSimpleName()); 得到類名;

    Log.d("SecondActivity","Task ID is"+getTaskId());//得到任務ID


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章