Android Activity 以及 Application 生命周期
在日常開發中(對又是日常開發)。你會發現很多邏輯如果只有onCreate和onDestory完全不夠用。所以稍微系統的了解一下Activity生命周期的相關知識,也很有必要。
本篇簡單學習Android Activity生命周期的相關知識。
Activity
Android 中所有的Activity都是由Activity棧來進行管理的。當切換到一個新的Activity時候,此Activiy會被壓到棧頂部,之前的Activity會被壓到棧底。
Activity的生命周期,可以從下方流程圖看出。
1.1 一個Activity的完整生命周期 onCreate -> onStart -> onResume -> onPause -> onStop -> onDestory,稱之為 entire lifetime.
2.2 當執行onStart回調方法的時候,Activity開始被用戶所見。所以在onCreate的時候用戶是看不到的,一直到onStop之前,此Activity都是可以被用戶看到的。此階段稱之為 visible lifetime.
3.3 當執行onResume回調方法的時候,Activity可以開始和用戶交互,一直到onPause方法之前。此階段稱之為foreground lifetime.
注:
onPause , 雖然Activity還是可見的 但大多數時候意味著用戶即將離開這個Activity.所以在onPause中,你可以用來 1.停止運行的浪費cpu的操作 2.提交沒有保存的修改 3.釋放系統資源
onDestroy ,應該清除那些可能導致內存泄漏的地方。并且確保所有線程都被destroyed并且所有操作都被停止。
Activity 操作
1.1 從 A Activity 到 B Activity,
打開 A Activity
A onCreate -> A onStart -> A onResume
2.2 點擊切換Activity按鈕,
A onPause -> B onCreate -> B onStart -> B onResume -> A onStop
如果點擊 back 按鈕,依次降執行
B onPause -> A onRestart -> A onStart -> A onResume -> B onStop -> B onDestroy
B Activity從站頂彈出并銷毀,此時 Activity 堆棧只有 A Activity。
3.3 如果再次點擊 back 按鈕
則執行 A onPause -> A onStop -> A onDestroy
4.4 如果點擊的是 home 按鈕
則執行 A onPause -> A onStop
注:
Android手機,開發者選項中有一個不保留活動的設置。從A Activity -> B Activity 會執行 A onDestroy,但是 A Activity還是處在Activity棧中。
點擊back 按鈕 依次執行 B onPause -> A onCreate -> A onStart -> A onResume -> B onStop -> B onDestroy
finish()
finish()方法主要有兩層含義
將此Activity移除Activity棧
調用此Activity的onDestroy
Tips:onBackPressed 默認實現是調用 finish()
Application
Application:
Base class for those who need to maintain global application state. You can
provide your own implementation by specifying its name in your
AndroidManifest.xml's <application> tag, which will cause that class
to be instantiated for you when the process for your application/package is created.
一個為保存全局變量設計的基本類。
public class App extends Application {@Overridepublic void onCreate() {// 程序創建的時候執行super.onCreate();}@Overridepublic void onTerminate() {// 程序終止的時候執行super.onTerminate();}@Overridepublic void onLowMemory() {// 低內存的時候執行super.onLowMemory();}@Overridepublic void onTrimMemory(int level) {// 程序在內存清理的時候執行super.onTrimMemory(level);}@Overridepublic void onConfigurationChanged(Configuration newConfig) {// 程序配置信息改變的時候執行super.onConfigurationChanged(newConfig);}}onCreate:程序創建的時候初始化
onTerminate:這個方法在程序結束的時候會調用。但是這個方法只用于Android仿真機測試的時候,在Android產品機是不會調用的。所以這個方法并沒什么用。
This method is for use in emulated process environments.
onLowMemory:監聽Android系統整體內存比較低的時候,來釋放一些不重要的資源,清理一下垃圾。
onTrimMemory(int level): level相當于一個權重,可以根據權重的值來做出相應的操作。int值越小越重要,int包括 5,10,15,20,40,60,80
Called when the operating system has determined that it is a good time for a process to trim unneeded memory from its process.
onConfigurationChanged:監聽一些配置信息發生改變的事件(屏幕旋轉),當配置信息發生改變的時候會調用這個方法
Tips:activity的configChanges,手機橫豎屏切換的時候如果activity沒有配置,activity會重啟,而且不止一次。為了防止這種情況就需要用到configChanges。
// 橫豎屏切換時就不會重新創建activity,還有很多其他配置參數`mmc`,`mnc` android:configChanges="orientation"轉載于:https://www.cnblogs.com/chenjy1225/p/9662272.html
總結
以上是生活随笔為你收集整理的Android Activity 以及 Application 生命周期的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 农行月月刷怎么参加
- 下一篇: MATLAB找不到遗传算法工具箱,用不了