activity生命週期

activity的生命週期

  1. onCreate():
    活動第一次建立的時候被調用,常作初始化的操做,比加載佈局(setContentView),綁定事件(findViewById)。表示Activity正在建立。
  2. onStart():
    活動由不可見到可見的時候被調用,表示Activity正在啓動,此時Activity可見但不在前臺。
  3. onResume():
    活動準備好和用戶進行交互時調用。表示Acitivity得到焦點,此時Activity可見且在前臺。
  4. onPause():
    系統準備去啓動或恢復另外一個活動時調用。表示Activity正在中止,此時可作存儲數據,中止動畫等操做。
  5. onStop():
    在活動徹底不可見的時候調用。表示Activity即將中止。
  6. onDestory():
    在活動被銷燬以前調用,表示Activity即將銷燬,常作回收工做、資源釋放。
  7. onRestart():
    在活動由中止狀態變爲運行狀態以前調用。表示Activity即將重啓。

生命週期的切換過程

  1. 啓動Activity: Starting ——–>Running
  • 所執行的生命週期順序 onCreate()->onStart()->onResume()

系統會先調用onCreate方法,而後調用onStart方法,最後調用onResume,Activity進入運行狀態。當前稱爲活動狀態(Running),此Activity所處於任務棧的top中,能夠與用戶進行交互。web

  1. 當前Activity被其餘Activity覆蓋其上(部分可見)或被鎖屏: Running ——>Paused
  • 所執行Activity生命週期中的onPause()

系統會調用onPause方法,暫停當前Activity的執行。該Activity已失去了焦點但仍然是可見的狀態(包括部分可見)。svg

  1. 當前Activity由被覆蓋狀態回到前臺或解鎖屏: Paused ——>Running
  • 所執行的生命週期爲:OnResume()

系統會調用onResume方法,再次進入運行狀態。佈局

  1. 當前Activity被新的Activity界面徹底覆蓋或按Home鍵回到主屏,自身退居後臺: Running——>Paused ——>Stoped
  • 所執行的生命週期爲: onPause()->onStop()

系統會先調用onPause方法,而後調用onStop方法,進入停滯狀態。(該Activity被另外一個Activity徹底覆蓋的狀態,該Activity變得不可見,因此係統常常會因爲內存不足而將該Activity強行結束。)動畫

  1. 從後臺回到前臺退回到此Activity: Stoped——>Running
  • 所執行的生命週期爲: onRestart()->onStart()->onResume()

系統會先調用onRestart方法,而後調用onStart方法,最後調用onResume方法,再次進入運行狀態。.net

  1. 用戶退出當前Activity: Stoped——>killed
  • 所執行的生命週期爲:onDestroy()

系統先調用onPause方法,而後調用onStop方法,最後調用onDestory方法,結束當前Activity。xml

  • 當一個Activity打開另外一個Activity都會回調哪些方法,若是ActivityB是徹底透明的呢,若是啓動的是一個對話框Activity呢?

A:onPause->B:onCreate->B:onStart->B:onResume->A:onStopblog

若是ActivityB是徹底透明的或對話框Activity則不會調用onStop。生命週期

  • 啓動新Activity後,又返回到舊的Activity

B:onPause->A:onRestart->A:onStart->A:onResume->B:onStop->B:onDestory事件

activity的生存期

活動的生存期分爲三個:
1.完整生存期
2.可見生存期
3.前臺生存期圖片

  • 完整生存期:
    onCreate()方法與onDestory()都處於完整生存期,通常狀況下,Activity會在onCreate()方法中完成各類初始化操做,而在onDestory()方法中完成釋放內存的操做。
  • 可見生存期:
    onStart()方法與onStop()方法就是可見生存期,Activity對於用戶是可見的,但沒法與用戶交互。onStart()方法中對資源進行加載,onStop()方法中對資源進行釋放。
  • 前臺生存期:
    onResume方法與onPause方法就是前臺生存期,在前臺生存期內,活動處於運行狀態,此時能夠與用戶交互。

在這裏插入圖片描述
在這裏插入圖片描述

https://blog.csdn.net/encounterto/article/details/82144305 https://blog.csdn.net/xiajun2356033/article/details/78741121 https://blog.csdn.net/weixin_41796401/article/details/102860545