2011年6月9日

Android 程式的生命週期測試

在每個生命週期事件加上一個Toast訊息,來得知呼叫的順序。
第一次執行程式時,進行起始啟動 OnCreate() > OnStart() > OnResume()

暫停Pause

按下HOME按鈕 OnPause() > OnStop(),程式只是暫停而停止,
當再次啟動程式時 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();
 }

沒有留言: