Android Activity生命週期

來源:互聯網
上載者:User

標籤:android   生命週期 activity   

當使用者需要對手機通過螢幕進行互動時,比如打一個電話,拍張照片,發送一個郵件,或者查看地圖。開發人員就需要實現一個活動(Activity)。每個活動都將作為一個提供使用者使用介面的視窗。它可以填滿整個螢幕,也可以小於、大於螢幕甚至漂浮在其它視窗上面。作為android應用程式中最重要的四大組件之一。今天我們來學習一下Android中Activity的生命週期。

首先,建立一個android project,包含兩個ActivityA和ActivityB
分十種情況討論

第一,正常啟動Activity A,輸出結果如下:

 

第二,從ActivityA跳到ActivityB,並且ActivityB全屏。即ActivityA被ActivityB完全完全覆蓋,輸出結果如下:

第三,在第二種的情況下,從ActivityB返回到ActivityA,輸出結果如下:

第四,從ActivityA跳到ActivityB,並且ActivityB非全屏。即ActivityA沒有被ActivityB完全完全覆蓋,輸出結果如下:

第五,在第四種的情況下,從ActivityB返回到ActivityA,輸出結果如下:

 

第六,在第一種情況下,點擊home鍵,輸出結果如下:

第七,在第六種的情況下,長按home鍵盤,從工作管理員中調出ActivityA,輸出結果如下:

第八,在第一種情況下,點擊電源鍵,輸出結果如下:

第九,在第八種的情況下,在開啟電源鍵回到ActivityA,輸出結果如下:

第十,退出ActivityA,輸出結果如下:

          在對上述十種情況討論完,可能覺得有點複雜,其實一點都不複雜,在梳理一下。首先最容易發現的是onCreate和onDestroy從頭到尾都只執行了一次。onCreate在一個活動最先開始啟動的時候執行了一次,onDestroy在活動結束關閉的時候執行了一次。另外可以發現除了在第四五兩種情況下,其餘情形的結果都相同,離開活動A,則A一次執行onPause和onStop,並且返回A的時候,一次執行onRestart、onStart和onResume。於是可以得出如下結論。只要不是在A進入到非全屏的其它活動中,則A執行onPause和onStop,反之只執行一個onPause,從其它活動返回,A執行onRestart、onStart和onResume,反之執行onResume。

          在測試四五兩種情況的時候,只要在AndroidManifest.xml中隊ActivityB的節點中添加如下一行代碼:

          android:theme="@android:style/Theme.Dialog"

附活動ActivityA代碼:

[java] view plaincopy
  1. package com.yuxianglong.view;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6. import android.util.Log;  
  7. import android.view.View;  
  8. import android.widget.Button;  
  9.   
  10. /** 
  11.  *  
  12.  * @ClassName: ActivityA 
  13.  * @Description: 對Activity生命週期的測試,重載了onCreate,onStart,onResume, 
  14.  *               onStop,onPause 
  15.  *               onDestroy,onRestart七個方法 
  16.  * @author gyz 
  17.  * @date 2014-7-9 上午10:55:37 
  18.  *  
  19.  */  
  20. public class ActivityA extends Activity {  
  21.   
  22.     private Button button;  
  23.     private String Tag = "yuxlong2010";  
  24.   
  25.     @Override  
  26.     protected void onCreate(Bundle savedInstanceState) {  
  27.         super.onCreate(savedInstanceState);  
  28.         Log.d(Tag, "I‘m  onCreate");  
  29.         setContentView(R.layout.activity_a);  
  30.         button = (Button) findViewById(R.id.button);  
  31.         button.setOnClickListener(new View.OnClickListener() {  
  32.               
  33.             @Override  
  34.             public void onClick(View v) {  
  35.                 // TODO Auto-generated method stub  
  36.                 startActivity(new Intent(ActivityA.this,ActivityB.class));  
  37.             }  
  38.         });  
  39.     }  
  40.   
  41.     @Override  
  42.     protected void onStart() {  
  43.         // TODO Auto-generated method stub  
  44.         super.onStart();  
  45.         Log.d(Tag, "I‘m  onStart");  
  46.     }  
  47.   
  48.     @Override  
  49.     protected void onResume() {  
  50.         // TODO Auto-generated method stub  
  51.         super.onResume();  
  52.         Log.d(Tag, "I‘m  onResume");  
  53.     }  
  54.   
  55.     @Override  
  56.     protected void onStop() {  
  57.         // TODO Auto-generated method stub  
  58.         super.onStop();  
  59.         Log.d(Tag, "I‘m  onStop");  
  60.     }  
  61.   
  62.     @Override  
  63.     protected void onDestroy() {  
  64.         // TODO Auto-generated method stub  
  65.         super.onDestroy();  
  66.         Log.d(Tag, "I‘m  onDestroy");  
  67.     }  
  68.   
  69.     @Override  
  70.     protected void onRestart() {  
  71.         // TODO Auto-generated method stub  
  72.         super.onRestart();  
  73.         Log.d(Tag, "I‘m  onRestart");  
  74.     }  
  75.   
  76.     @Override  
  77.     protected void onPause() {  
  78.         // TODO Auto-generated method stub  
  79.         super.onPause();  
  80.         Log.d(Tag, "I‘m  onPause");  
  81.     }  
  82. }  

Android Activity生命週期

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.