Activity的生命周期的七個(gè)場(chǎng)景

簡(jiǎn)單介紹Activity生命周期經(jīng)常調(diào)用的幾個(gè)方法:

  • onCreate()與onDestroy()
    Activity的創(chuàng)建銷毀瓜富,處于Activity的entire lifetime完整生命周期
  • onStart()與onStop()
    Activity的可見不可見,處于Activity的visible lifetime可見生命周期
  • onResume()與onPause()
    Activity的獲取焦點(diǎn)與失去焦點(diǎn),處于Activity的foreground time 前臺(tái)生命周期
  • onSaveInstanceState()與onRestoreIntanceState()
    保存數(shù)據(jù)取出保存的數(shù)據(jù)合溺,橫豎屏切換的時(shí)候毁欣,兩個(gè)方法會(huì)被同時(shí)調(diào)用庇谆,當(dāng)然這只是這兩個(gè)方法同時(shí)出現(xiàn)場(chǎng)景之一
  • onConfiguration()
    在Activity的Manifest文件下配置完configChanges屬性,如果是橫豎屏切換相關(guān)值,則在橫豎屏切換時(shí)會(huì)被調(diào)用

下面用Activity的使用的七個(gè)場(chǎng)景來這些生命周期方法的執(zhí)行順序


一凭疮、Activity1首次啟動(dòng)

onCreate-->onStart-->onResume

控制臺(tái)打印效果圖
Activity首次啟動(dòng)生命周期調(diào)用順序.png

二饭耳、Activity1按返回鍵并從手機(jī)緩存應(yīng)用列表中啟動(dòng)

onResume-->onPause-->onStop-->onDestroy
再次啟動(dòng):onCreate-->onStart-->onResume

控制臺(tái)打印效果圖
Activity從手機(jī)緩存啟動(dòng).jpg

三、Activity1按住home鍵從手機(jī)緩存應(yīng)用列表中再次啟動(dòng)

onResume-->onPause-->onSaveInstanceState-->onStop
再次啟動(dòng):onRestart-->onStart-->onResume

控制臺(tái)打印效果圖
Home鍵再?gòu)氖謾C(jī)緩存啟動(dòng).jpg

四执解、Activity1鎖屏關(guān)閉再開啟

onResume-->onPause-->onSaveInstanceState-->onStop
再次啟動(dòng):onRestart-->onStart-->onResume

控制臺(tái)打印效果圖
鎖屏關(guān)閉.jpg

五寞肖、Activity1啟動(dòng)Activity2

Activity1:onResume-->onPause
Activity2:onCreate-->onStart-->onResume
Activity1:onSaveInstanceState-->onStop

控制臺(tái)打印效果圖
Activity1啟動(dòng)Activity2.jpg

六、Activity1啟動(dòng)Activity2,Activity2退出或者按返回鍵

Activity2:onResume-->onPause
Activity1:onRestart-->onStart-->onResume
Activity2:onStop-->onDestroy

控制臺(tái)打印效果圖
Activity2被關(guān)閉.jpg

七衰腌、Activity1橫縱屏切換新蟆,并做相關(guān)配置

豎屏:onCreate-->onStart-->onResume-->onPause-->onSaveInstanceState
-->onStop-->onDestroy

橫屏:onCreate-->onStart-->onRestoreInstanceState-->onResume

控制臺(tái)打印效果圖
橫縱屏切換.jpg

配置Activity橫豎切換不重新創(chuàng)建

android:configChanges="orientation|screenSize"
是在AndroidManifest.xml相應(yīng)的<activity>標(biāo)簽的屬性

控制臺(tái)打印效果圖
配置ActivityconfigChanges后生命周期.jpg
Activity1代碼塊
public class MainActivity extends AppCompatActivity {
   static String TAG="dayng";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if(savedInstanceState!=null){
            Log.i(TAG,"退出時(shí)保存的數(shù)據(jù)"+savedInstanceState.getString("dayang"));
        }
        Log.i(TAG,"-------MainActivity.onCreate--------");
    }
    public void onClick(View view){
        Intent intent=new Intent(this,Main2Activity.class);
        startActivity(intent);
    }
    @Override
    protected void onStart() {
        super.onStart();
        Log.i(TAG,"-------MainActivity.onStart--------");
    }
    @Override
    protected void onResume() {
        super.onResume();
        Log.i(TAG,"-------MainActivity.onResume--------");
    }
    @Override
    protected void onPause() {
        super.onPause();
        Log.i(TAG,"-------MainActivity.onPause--------");
    }
    @Override
    protected void onRestart() {
        super.onRestart();
        Log.i(TAG,"-------MainActivity.onRestart--------");
    }
    @Override
    protected void onStop() {
        super.onStop();
        Log.i(TAG,"-------MainActivity.onStop--------");
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i(TAG,"-------MainActivity.onDestroy--------");
    }
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        outState.putString("dayang","-----7777777");
        super.onSaveInstanceState(outState);
        Log.i(TAG,"--------MainActivity.onSaveInstanceState--------");
    }
    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        Log.i(TAG,"--------MainActivity.onRestoreInstanceState--------");
    }
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        Log.i(TAG,"--------MainActivity.onConfiguration--------");
    }
}
Activity2代碼塊
public class Main2Activity extends AppCompatActivity {
    static String TAG="dayang";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        Log.i(TAG,"-------Main2Activity.onCreate-------");
    }
    @Override
    protected void onStart() {
        super.onStart();
        Log.i(TAG,"-------Main2Activity.onStart-------");
    }
    @Override
    protected void onResume() {
        super.onResume();
        Log.i(TAG,"-------Main2Activity.onResume-------");
    }
    @Override
    protected void onPause() {
        super.onPause();
        Log.i(TAG,"-------Main2Activity.onPause-------");
    }
    @Override
    protected void onStop() {
        super.onStop();
        Log.i(TAG,"-------Main2Activity.onStop-------");
    }
    @Override
    protected void onRestart() {
        super.onRestart();
        Log.i(TAG,"-------Main2Activity.onRestart-------");
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i(TAG,"-------Main2Activity.onDestroy-------");
    }
    public void close(View view){
        finish();
    }
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        Log.i(TAG,"-------Main2Activity.onSaveInstanceState-------");
    }
    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        Log.i(TAG,"-------Main2Activity.onRestoreInstanceState-------");
    }
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        Log.i(TAG,"-------Main2Activity.onConfiguration-------");
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市右蕊,隨后出現(xiàn)的幾起案子琼稻,更是在濱河造成了極大的恐慌,老刑警劉巖饶囚,帶你破解...
    沈念sama閱讀 216,919評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帕翻,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡萝风,警方通過查閱死者的電腦和手機(jī)嘀掸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來规惰,“玉大人睬塌,你說我怎么就攤上這事。” “怎么了衫仑?”我有些...
    開封第一講書人閱讀 163,316評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵梨与,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我文狱,道長(zhǎng)粥鞋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,294評(píng)論 1 292
  • 正文 為了忘掉前任瞄崇,我火速辦了婚禮呻粹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘苏研。我一直安慰自己等浊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評(píng)論 6 390
  • 文/花漫 我一把揭開白布摹蘑。 她就那樣靜靜地躺著筹燕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪衅鹿。 梳的紋絲不亂的頭發(fā)上撒踪,一...
    開封第一講書人閱讀 51,245評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音大渤,去河邊找鬼制妄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛泵三,可吹牛的內(nèi)容都是我干的耕捞。 我是一名探鬼主播,決...
    沈念sama閱讀 40,120評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼烫幕,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼俺抽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起纬霞,我...
    開封第一講書人閱讀 38,964評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤凌埂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后诗芜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瞳抓,經(jīng)...
    沈念sama閱讀 45,376評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評(píng)論 2 333
  • 正文 我和宋清朗相戀三年伏恐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了孩哑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,764評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡翠桦,死狀恐怖横蜒,靈堂內(nèi)的尸體忽然破棺而出胳蛮,到底是詐尸還是另有隱情,我是刑警寧澤丛晌,帶...
    沈念sama閱讀 35,460評(píng)論 5 344
  • 正文 年R本政府宣布仅炊,位于F島的核電站,受9級(jí)特大地震影響澎蛛,放射性物質(zhì)發(fā)生泄漏抚垄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評(píng)論 3 327
  • 文/蒙蒙 一谋逻、第九天 我趴在偏房一處隱蔽的房頂上張望呆馁。 院中可真熱鬧,春花似錦毁兆、人聲如沸浙滤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)纺腊。三九已至,卻和暖如春茎芭,著一層夾襖步出監(jiān)牢的瞬間摹菠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工骗爆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蔽介。 一個(gè)月前我還...
    沈念sama閱讀 47,819評(píng)論 2 370
  • 正文 我出身青樓摘投,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親虹蓄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子犀呼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Activity生命周期的分析 從兩種情況來分析 典型情況(用戶正常參與的情況) 異常情況(由于內(nèi)存不足,被系統(tǒng)殺...
    X_Sation閱讀 220評(píng)論 0 1
  • 啟動(dòng)與銷毀Activity 不同于使用 main() 方法啟動(dòng)應(yīng)用的其他編程范例薇组,Android 系統(tǒng)會(huì)通過調(diào)用對(duì)...
    安卓Boy閱讀 1,775評(píng)論 3 5
  • 說起Activity大家都不陌生外臂,它主要是跟用戶去打交道,其實(shí)律胀,它并不僅僅將視圖顯示給用戶宋光,它的背后隱藏的很大的知...
    ReturnYHH閱讀 811評(píng)論 0 5
  • 最近 ,每天幾乎凌晨1.2點(diǎn)睡 炭菌,4.5點(diǎn)起來罪佳。也不是睡不著,只是每天躺到床上都已經(jīng)11點(diǎn)多黑低,又想早起赘艳,晚起感覺這...
    MRAbby閱讀 188評(píng)論 0 6
  • Microcharts是一個(gè)優(yōu)秀的開源項(xiàng)目,基于SkiaSharp實(shí)現(xiàn),項(xiàng)目地址 ±俟埽可以幫助我們實(shí)現(xiàn)各種圖表功能枷踏,...
    MayueCif閱讀 6,823評(píng)論 9 4