Activity 生命週期和棧(Task)的關係及Intent 常用的Flags
一、Activity的生命週期
有3個Activity:A,B
第一次建立A(正常):onCreate()>>onStart()>>onResume()
結束A:onPause()>>onStop()>>onDestory()
有覆蓋半透明B:onPause() 恢復A:onResume();
有覆蓋A不可見:onPause()>>onStop() 恢復A:onRestart()>>onStart()>>onResume()
結束Activity有兩種方式:
1、finish()
2、系統自動回收:在記憶體不足時優先順序更高的Activity要執行,則系統會回收之前的一個Activity,使用者重新選擇被回收的Activity時,又重新執行一次onCreate()方法
二、
1.Activity和棧的關係
2.Activity的啟動模式:(黃色部分)
<activity android:name=".MainActivity" android:launchMode="standard" />
Standard:每次啟用Activity時都會建立Activity,並放入任務棧中。
SingleTop:如果Activity例項正好在棧頂, 就重用這個Activity,否者就會建立新的例項並放入棧頂(即使棧中已經存在該Activity例項,只要不在棧頂,都會建立例項)。
SingleTask:如果在棧中已經有該Activity的例項,就重用該例項(會呼叫例項的onNewIntent())。重用時,會讓該例項回到棧頂,因此在它上面的例項將會被移除棧。如果棧中不存在該例項,將會建立新的例項放入棧中。
SingleInstance:在一個新棧中建立該Activity例項,並讓多個應用共享改棧中的該Activity例項。一旦改模式的Activity的例項存在於某個棧中,任何應用再啟用改Activity時都會重用該棧中的例項,其效果相當於多個應用程式共享一個應用,不管誰啟用該Activity都會進入同一個應用中。
三、經常用到的Intent.Flags
FLAG_ACTIVITY_NEW_TASK:預設,會重新建立新的Activity
FLAG_ACTIVITY_SINGLE_TOP:相當於啟動模式的singleTop,比如:棧中有:ABCD四個Activity。如果在D中啟動D,棧的情況還是ABCD。
FLAG_ACTIVITY_CLEAR_TOP:相當於啟動模式的singleTask,比如:棧中有:ABCD四個Activity。如果在D中啟動B,則棧成AB
FLAG_ACTIVITY_NO_HISTORY:表示不留在棧裡
FLAG_ACTIVITY_REORDER_TO_FRONT:比如:棧中有:ABCD四個Activity。如果在D中啟動B,則棧成ACDB
相關文章
- View生命週期與Activity生命週期的關係View
- 品牌生命週期和產品生命週期之間的關係
- Activity生命週期
- Intent.FLAG_ACTIVITY_NEW_TASKIntent
- Android Activity生命週期Android
- Activity生命週期onDestroy
- Android Activity生命週期的一點感悟Android
- Android四大元件——Activity——Activity的生命週期Android元件
- Flutter路由棧和生命週期解析Flutter路由
- 為什麼 bindService 能和 Activity 的生命週期聯動?
- 擼擼Android的羊毛(二)----Activity生命週期Android
- Android Activity是如何啟動的?Activity的生命週期是如何呼叫的?Android
- Activity A 跳轉到 Activity B,生命週期的執行過程
- Android | Activity和Fragment最全生命週期+發現大牛AndroidFragment
- Maven生命週期及常用命令Maven
- Activity生命週期與啟動模式模式
- Android全面解析之Activity生命週期Android
- Activity、Fragment和IntentFragmentIntent
- Activity生命週期回撥是如何被回撥的?
- Activity橫豎屏切換生命週期
- 喜聞樂見之Activity生命週期
- 從幾個例項來記憶Activity的生命週期
- 重溫Android四大元件—Activity的生命週期Android元件
- Activity 生命週期,如何一手掌控
- 第一章-Activity典型情況下的生命週期
- Linux-task_struct和檔案系統及管道的關係LinuxStruct
- 10 張圖聊聊執行緒的生命週期和常用 APIs執行緒API
- 建立和管理一個 CA 及證書的生命週期
- Android入門教程之Activity(生命週期,啟動...)Android
- 安卓APP活動Activity的生命週期及其各方法,注意onPause()和onStop()的區別安卓APP
- React元件的狀態及生命週期事件React元件事件
- viewController的生命週期ViewController
- Servlet的生命週期Servlet
- UIViewController的生命週期UIViewController
- Flutter 的生命週期Flutter
- Spring的生命週期Spring
- bean的生命週期Bean
- SQL的生命週期SQL
- Laravel的生命週期Laravel