图解:Activity生命周期
? ? ? ? ??當(dāng)用戶需要對(duì)手機(jī)通過(guò)屏幕進(jìn)行交互時(shí),比如打一個(gè)電話,拍張照片,發(fā)送一個(gè)郵件,或者查看地圖。開(kāi)發(fā)者就需要實(shí)現(xiàn)一個(gè)活動(dòng)(Activity)。每個(gè)活動(dòng)都將作為一個(gè)提供用戶使用接口的窗口。它可以填滿整個(gè)屏幕,也可以小于、大于屏幕甚至漂浮在其它窗口上面。作為android應(yīng)用程序中最重要的四大組件之一。今天我們來(lái)學(xué)習(xí)一下Android中Activity的生命周期。
首先,創(chuàng)建一個(gè)android project,包含兩個(gè)ActivityA和ActivityB
分十種情況討論
?
第一,正常啟動(dòng)Activity A,輸出結(jié)果如下:
?
第二,從ActivityA跳到ActivityB,并且ActivityB全屏。即ActivityA被ActivityB完全完全覆蓋,輸出結(jié)果如下:
?
?
?
第三,在第二種的情況下,從ActivityB返回到ActivityA,輸出結(jié)果如下:
?
?
第四,從ActivityA跳到ActivityB,并且ActivityB非全屏。即ActivityA沒(méi)有被ActivityB完全完全覆蓋,輸出結(jié)果如下:
?
?
第五,在第四種的情況下,從ActivityB返回到ActivityA,輸出結(jié)果如下:
?
?
第六,在第一種情況下,點(diǎn)擊home鍵,輸出結(jié)果如下:
?
?
?
第七,在第六種的情況下,長(zhǎng)按home鍵盤,從任務(wù)管理器中調(diào)出ActivityA,輸出結(jié)果如下:
?
?
?
第八,在第一種情況下,點(diǎn)擊電源鍵,輸出結(jié)果如下:
?
?
?
第九,在第八種的情況下,在打開(kāi)電源鍵回到ActivityA,輸出結(jié)果如下:
?
?
?
第十,退出ActivityA,輸出結(jié)果如下:
?
?
?
? ? ? ? ? 在對(duì)上述十種情況討論完,可能覺(jué)得有點(diǎn)復(fù)雜,其實(shí)一點(diǎn)都不復(fù)雜,在梳理一下。首先最容易發(fā)現(xiàn)的是onCreate和onDestroy從頭到尾都只執(zhí)行了一次。onCreate在一個(gè)活動(dòng)最先開(kāi)始啟動(dòng)的時(shí)候執(zhí)行了一次,onDestroy在活動(dòng)結(jié)束關(guān)閉的時(shí)候執(zhí)行了一次。另外可以發(fā)現(xiàn)除了在第四五兩種情況下,其余情形的結(jié)果都相同,離開(kāi)活動(dòng)A,則A一次執(zhí)行onPause和onStop,并且返回A的時(shí)候,一次執(zhí)行onRestart、onStart和onResume。于是可以得出如下結(jié)論。只要不是在A進(jìn)入到非全屏的其它活動(dòng)中,則A執(zhí)行onPause和onStop,反之只執(zhí)行一個(gè)onPause,從其它活動(dòng)返回,A執(zhí)行onRestart、onStart和onResume,反之執(zhí)行onResume。
? ? ? ? ? 在測(cè)試四五兩種情況的時(shí)候,只要在AndroidManifest.xml中隊(duì)ActivityB的節(jié)點(diǎn)中添加如下一行代碼:
? ? ? ? ? android:theme="@android:style/Theme.Dialog"
附活動(dòng)ActivityA代碼:
?
package com.yuxianglong.view;import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button;/*** * @ClassName: ActivityA* @Description: 對(duì)Activity生命周期的測(cè)試,重載了onCreate,onStart,onResume,* onStop,onPause* onDestroy,onRestart七個(gè)方法* @author yuxianglong* @date 2013-7-9 上午9:09:22* */ public class ActivityA extends Activity {private Button button;private String Tag = "yuxlong2010";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Log.d(Tag, "I'm onCreate");setContentView(R.layout.activity_a);button = (Button) findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubstartActivity(new Intent(ActivityA.this,ActivityB.class));}});}@Overrideprotected void onStart() {// TODO Auto-generated method stubsuper.onStart();Log.d(Tag, "I'm onStart");}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();Log.d(Tag, "I'm onResume");}@Overrideprotected void onStop() {// TODO Auto-generated method stubsuper.onStop();Log.d(Tag, "I'm onStop");}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();Log.d(Tag, "I'm onDestroy");}@Overrideprotected void onRestart() {// TODO Auto-generated method stubsuper.onRestart();Log.d(Tag, "I'm onRestart");}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();Log.d(Tag, "I'm onPause");} }?
?
總結(jié)
以上是生活随笔為你收集整理的图解:Activity生命周期的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: jquery.formValidator
- 下一篇: java https安全传输