Android入門:Activity四種啟動模式
一、啟動模式介紹
啟動模式簡單地說就是Activity啟動時的策略,在AndroidManifest.xml中的標籤的android:launchMode屬性設定;
啟動模式有4種,分別為standard、singleTop、singleTask、singleInstance;
講解啟動模式之前,有必要先講解一下“任務棧”的概念;
任務棧
每個應用都有一個任務棧,是用來存放Activity的,功能類似於函式呼叫的棧,先後順序代表了Activity的出現順序;比如Activity1-->Activity2-->Activity3,則任務棧為:
二、啟動模式
(1)standard:每次啟用Activity時(startActivity),都建立Activity例項,並放入任務棧;
(2)singleTop:如果某個Activity自己啟用自己,即任務棧棧頂就是該Activity,則不需要建立,其餘情況都要建立Activity例項;
(3)singleTask:如果要啟用的那個Activity在任務棧中存在該例項,則不需要建立,只需要把此Activity放入棧頂,並把該Activity以上的Activity例項都pop;
(4)singleInstance:如果應用1的任務棧中建立了MainActivity例項,如果應用2也要啟用MainActivity,則不需要建立,兩應用共享該Activity例項;
SingTask的應用:
可以用來退出整個應用。
將主Activity設為SingTask模式,然後在要退出的Activity中轉到主Activity,然後重寫主Activity的onNewIntent函式,並在函式中加上一句finish。
附:
退出單個Activity方法:
呼叫finish
殺死該程序:killprocess(Process.mId)
終止正在執行的虛擬機器:system.exit()
退出整個應用:
製造拋異常導致整個程式退出
將所有的activity放入到一個list中,然後在需要退出的時候,將所有的activity,finish掉
通過廣播來完成退出功能
通過廣播來完成退出功能,具體實現過程是這樣的:在每個Activity建立時(onCreate時)給Activity註冊一個廣播接收器,當退出時傳送該廣播即可。大概的程式碼如下:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); IntentFilter filter = new IntentFilter(); filter.addAction("finish"); registerReceiver(mFinishReceiver, filter); …… } private BroadcastReceiver mFinishReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if("finish".equals(intent.getAction())) { Log.e("#########", "I am " + getLocalClassName() + ",now finishing myself..."); finish(); } } };
把上面的程式碼寫在一個基類裡面,這樣,在需要退出的地方呼叫close,傳送廣播,每個Activity接收到廣播後,就會將自己finish掉。
相關推薦
Android入門:Activity四種啟動模式
一、啟動模式介紹 啟動模式簡單地說就是Activity啟動時的策略,在AndroidManifest.xml中的標籤的android:launchMode屬性設定; 啟動模式有4種,分別為standard、singleTop、singleTask、singleInstance; 講解啟動模式之前
Android中的Activity四種啟動模式(launchMode)(面試必問)
android:launchMode standard 預設標準的啟動模式,每次startActivity(Intent intent)請求都建立一個新的activity實 例,適用於大多數場景。 singleTop 單一頂部,如果要啟動的activity在任務棧的頂部已經存在,不會建立新的例項,而是呼叫 o
Android基礎之Activity四種啟動模式和task相關
1 啟動模式介紹 啟動模式簡單地說就是Activity啟動時的策略,在AndroidManifest.xml中的標籤的android:launchMode屬性設定; 啟動模式有4種,分別為standard、singleTop、singleTask、singleI
Android:圖解四種啟動模式 及 實際應用場景解說
類型 placed data val add The avi 能夠 per 在一個項目中會包括著多個Activity,系統中使用任務棧來存儲創建的Activity實例,任務棧是一種“後進先出”的棧結構。舉個栗子,若我們多次啟動同一個Activity。系統會創建多個實例依次放
Android中Activity四種啟動模式和taskAffinity屬性詳解
在android應用開發中,打造良好的使用者體驗是非常重要的。而在使用者體驗中,介面的引導和跳轉是值得深入研究的重要內容。在開發中,與介面跳轉聯絡比較緊密的概念是Task(任務)和Back Stack(回退棧)。activity的啟動模式會影響Task和Back Stack
Android activity四種啟動模式及taskAffinity屬性總結(附例子原始碼)
Android activity四種啟動模式總結本人目前在看 Android 開發藝術探索 這本書,書中對啟動模式的講解比較詳細,所以自己想總結下。如果各位能認真的看上一遍,相信會對android activity的啟動模式會有更加深刻的印象。Android啟動模式:
Activity四種啟動模式 圖文詳解:standard, singleTop, singleTask 以及 singleInstance
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0520/2897.html 啟動模式 啟動模式是什麼 有這樣的場景: 當我們使用App的時候,呈現出一個Activity,按下返回鍵(不考慮重寫返回
android任務棧及activity四種啟動模式
一、android任務棧 棧:先進後出 佇列:先進先出 任務棧Task中:開啟一個Activity叫進棧 關閉一個activit出棧 任務棧是用來維護Activity的、是用來維護使用者
【筆記】Activity四種啟動模式區別
參考:https://blog.csdn.net/edisonchang/article/details/49981457 activity 啟動的四種模式 : AndroidManifest.xml :: android:launchMode="???" 1.standard:【不會
Activity四種啟動模式的認識
最近看了一些前輩的文章,有了一些新的認識,不僅僅是知識,包括對待事情的態度。記錄下來,作為自己態度的見證。首先在android中對於Activity的例項是通過棧(Task)來進行管理的,棧是一種先進後出的資料結構。主要的操作就是進棧和出棧。簡單的如下圖所示。
Activity四種啟動模式的特點
一.Activity四種啟動模式的特點 1.standard模式 Activity預設的啟動模式,依次入棧出棧,滿足"先進後出"的原則。這種模式下,可以有多個相同的例項,也允許多個相同Activity疊加 2.singleTop模式 當啟動的Activity已
Activity四種啟動模式的利用場景
一.singleTask: 需求說明: 如果自己的客戶端處於執行狀態,按下Home鍵後臺掛起。此時如果使用微信調起自己的客戶端某 個頁面,不做任何處理的情況下,按下回退或者當前 Activity.finish(),頁面都會停留在自己的客戶端(因為自己的Application
Activity四種啟動模式
Activity啟動方式有四種,分別是: standard singleTop singleTask singleInstance 可以根據實際的需求為Activity設定對應的啟動模式,從而可以避免建立大量重複的Activity等問題。 設定Activity的啟動模式,只
Activity四種啟動模式說明
1,standard標準模式: 每次啟動一個Activity都會重新建立一個例項,即呼叫Activity建立時的生命週期方法onCreate,onStart,onResume;被啟動的Activity會自動新增到啟動它的Activity的任務棧中,因此用Applicatio
Activity四種啟動模式及其應用場景
standard 、 singleTop 、 singleTask 、 singleInstance(1) standard預設的啟動模式,每次該模式啟動一個Activity都會重新創健一個新的例項。這種模式下,誰啟動了該模式的Activity,每次啟動一個Activity,
Activity四種啟動模式與任務棧(Task)總結分析
最近在總結android基礎問題 比如Activity的四種啟動模式 其中有涉及到任務棧的問題 之前都是一知半解 現在想著用筆記錄下來 可供自己以後參考 android任務棧簡單瞭解 1. android任務棧又稱為Task,它是一個棧結構,具有後進先出的特性
Android學習筆記——Activity的四種啟動模式
1.Activity的管理機制 Android的管理主要是通過Activity棧來進行的。當一個Activity啟動時,系統根據其配置或呼叫的方式,將Activity壓入一個特定的棧中,系統處 於執行(Running or Resumed)狀態。當按Back鍵或觸發finish(
[Android]基礎--Activity的四種啟動模式
Activity的管理機制 Android的管理主要是通過Activity棧來進行的。當一個Activity啟動時,系統根據其配置或呼叫的方式,將Activity壓入一個特定的棧中,系統處於執行(Running or Resumed)狀態。當按Back鍵或觸發finish()方法時,Acti
Android Activity的四種啟動模式
前言 記得第一次探討Activity的啟動模式,是在2017年8月份,那個時候對一年後走出校門的未來很是憧憬,時間真快,已經畢業四個月,工作和生活也都趨於穩定。 一、小前言 相信很多人和我一樣,在初學Android甚至初入職場的時候不瞭解Acticity的啟動模式,
Android面試——Activity的四種啟動模式
前言 今天開始,會逐步總結Android面試可能遇到的各種問題及其知識點總結。為的就是今天4月份的晉升面試或者更好機會的面試能夠拿出100%的狀態。 有興趣的同學,也可以關注我的Android面試資料夾。 Activity四種啟動模式 Activ