1. 程式人生 > >Android入門:Activity四種啟動模式

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。系統會創建多個實例依次放

AndroidActivity啟動模式和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