啓動模式 中singleTask 的理解,舉個例子,2個activity firstActivity second Activity, 點一個切換到第二個,再點第一個切換到第一個,這個時候 firstActivity 是reStart, 而不創建,而secondActivity會銷燬,因爲它在棧的最上邊,firstActivity把它替換掉,所以就onDestroy;
只要不再顯示就會執行onStop(),沒有銷燬就會經歷onRestart(),onStart()重新變得可見。
比較好的演示生命週期的例子,可以很明顯的看到各個活動的創建,停止,銷燬,重新啓動整個過程,只用一個過濾器就能區分。
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中的相關內容;幾個小技巧:Log.d("BaseActivity","onCreate"+getClass().getSimpleName()); 得到類名;
Log.d("SecondActivity","Task ID is"+getTaskId());//得到任務ID
《第一行代碼》2章 Activity生命週期理解
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.