在每個生命週期事件加上一個Toast訊息,來得知呼叫的順序。
第一次執行程式時,進行起始啟動 OnCreate() > OnStart() > OnResume()
暫停Pause
按下HOME按鈕 OnPause() > OnStop(),程式只是暫停而停止,
當再次啟動程式時 OnReStart() > OnStart() > OnResume()。
當再次啟動程式時 OnReStart() > OnStart() > OnResume()。
- 當呼叫Intent時,程式會先暫停(OnPause() > OnStop(),然後返回時 OnReStart() > OnStart() > OnResume())。
結束Destroy
按下BACK按鈕或呼叫finish()方法,則會真正的結束程式 OnPause() > OnStop() > onDestroy(),
當再次執行程式時,就如同起始啟動
當再次執行程式時,就如同起始啟動
- 當旋轉螢幕時,程式會先結束,然後再啟始起動(OnPause() > OnStop() > onDestroy() > OnCreate() > OnStart() > OnResume())。
機器休眠待機時
此時可分為兩種情形
- 程式在執行狀態:經過多個Pause,Resume,Stop事件後,最後會Destory。當機器醒來時,程式會重新起始啟動OnCreate() > OnStart() > OnResume()。
- 程式在暫停狀態:當機器醒來重新執行程式時,就如同從暫停模式回來一樣 OnReStart()>OnStart()>OnResume()。
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Toast.makeText(this, "onCreate", Toast.LENGTH_LONG).show(); } @Override protected void onRestart() { // TODO Auto-generated method stub super.onRestart(); Toast.makeText(this, "onRestart", Toast.LENGTH_LONG).show(); } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); Toast.makeText(this, "onStart", Toast.LENGTH_LONG).show(); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); Toast.makeText(this, "onResume", Toast.LENGTH_LONG).show(); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); Toast.makeText(this, "onPause", Toast.LENGTH_LONG).show(); } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); Toast.makeText(this, "onStop", Toast.LENGTH_LONG).show(); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); Toast.makeText(this, "onDestroy", Toast.LENGTH_LONG).show(); }
沒有留言:
張貼留言