1. 程式人生 > >Activity的四種啟動模式和onNewIntent()

Activity的四種啟動模式和onNewIntent()

  在Android中每個介面都是一個Activity,切換介面操作其實是多個不同Activity之間的例項化操作。在Android中Activity的啟動模式決定了Activity的啟動執行方式。

  Android總Activity的啟動模式分為四種:

複製程式碼
Activity啟動模式設定:

        <activity android:name=".MainActivity" android:launchMode="standard" />

Activity的四種啟動模式:

    1. standard

        預設啟動模式,每次啟用Activity時都會建立Activity,並放入任務棧中。

    
2. singleTop 如果在任務的棧頂正好存在該Activity的例項, 就重用該例項,否者就會建立新的例項並放入棧頂(即使棧中已經存在該Activity例項,只要不在棧頂,都會建立例項)。 3. singleTask 如果在棧中已經有該Activity的例項,就重用該例項(會呼叫例項的onNewIntent())。重用時,會讓該例項回到棧頂,因此在它上面的例項將會被移除棧。如果棧中不存在該例項,將會建立新的例項放入棧中。 4. singleInstance 在一個新棧中建立該Activity例項,並讓多個應用共享改棧中的該Activity例項。一旦改模式的Activity的例項存在於某個棧中,任何應用再啟用改Activity時都會重用該棧中的例項,其效果相當於多個應用程式共享一個應用,不管誰啟用該Activity都會進入同一個應用中。
複製程式碼

       大家遇到一個應用的Activity供多種方式呼叫啟動的情況,多個呼叫希望只有一個Activity的例項存在,這就需要Activity的onNewIntent(Intent intent)方法了。只要在Activity中加入自己的onNewIntent(intent)的實現加上Manifest中對Activity設定lanuchMode=“singleTask”就可以。

       onNewIntent()非常好用,Activity第一啟動的時候執行onCreate()---->onStart()---->onResume()等後續生命週期函式,也就時說第一次啟動Activity並不會執行到onNewIntent(). 而後面如果再有想啟動Activity的時候,那就是執行onNewIntent()---->onResart()------>onStart()----->onResume().  如果android系統由於記憶體不足把已存在Activity釋放掉了,那麼再次呼叫的時候會重新啟動Activity即執行onCreate()---->onStart()---->onResume()等。

     當呼叫到onNewIntent(intent)的時候,需要在onNewIntent() 中使用setIntent(intent)賦值給Activity的Intent.否則,後續的getIntent()都是得到老的Intent。

相關推薦

Activity啟動模式onNewIntent()

  在Android中每個介面都是一個Activity,切換介面操作其實是多個不同Activity之間的例項化操作。在Android中Activity的啟動模式決定了Activity的啟動執行方式。   Android總Activity的啟動模式分為四種: Activity啟動模式設定:

Android基礎之Activity啟動模式task相關

1 啟動模式介紹 啟動模式簡單地說就是Activity啟動時的策略,在AndroidManifest.xml中的標籤的android:launchMode屬性設定; 啟動模式有4種,分別為standard、singleTop、singleTask、singleI

Android中Activity啟動模式taskAffinity屬性詳解

在android應用開發中,打造良好的使用者體驗是非常重要的。而在使用者體驗中,介面的引導和跳轉是值得深入研究的重要內容。在開發中,與介面跳轉聯絡比較緊密的概念是Task(任務)和Back Stack(回退棧)。activity的啟動模式會影響Task和Back Stack

【筆記】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已

Android中的Activity啟動模式(launchMode)(面試必問)

android:launchMode standard 預設標準的啟動模式,每次startActivity(Intent intent)請求都建立一個新的activity實 例,適用於大多數場景。 singleTop 單一頂部,如果要啟動的activity在任務棧的頂部已經存在,不會建立新的例項,而是呼叫 o

Activity啟動模式的利用場景

一.singleTask: 需求說明: 如果自己的客戶端處於執行狀態,按下Home鍵後臺掛起。此時如果使用微信調起自己的客戶端某 個頁面,不做任何處理的情況下,按下回退或者當前 Activity.finish(),頁面都會停留在自己的客戶端(因為自己的Application

Activity啟動模式

Activity啟動方式有四種,分別是: standard singleTop singleTask singleInstance 可以根據實際的需求為Activity設定對應的啟動模式,從而可以避免建立大量重複的Activity等問題。 設定Activity的啟動模式,只

Android activity啟動模式及taskAffinity屬性總結(附例子原始碼)

Android activity四種啟動模式總結本人目前在看 Android 開發藝術探索 這本書,書中對啟動模式的講解比較詳細,所以自己想總結下。如果各位能認真的看上一遍,相信會對android activity的啟動模式會有更加深刻的印象。Android啟動模式:   

Activity啟動模式說明

1,standard標準模式: 每次啟動一個Activity都會重新建立一個例項,即呼叫Activity建立時的生命週期方法onCreate,onStart,onResume;被啟動的Activity會自動新增到啟動它的Activity的任務棧中,因此用Applicatio

Activity啟動模式 圖文詳解:standard, singleTop, singleTask 以及 singleInstance

http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0520/2897.html 啟動模式 啟動模式是什麼 有這樣的場景: 當我們使用App的時候,呈現出一個Activity,按下返回鍵(不考慮重寫返回

Activity啟動模式及其應用場景

standard 、 singleTop 、 singleTask 、 singleInstance(1) standard預設的啟動模式,每次該模式啟動一個Activity都會重新創健一個新的例項。這種模式下,誰啟動了該模式的Activity,每次啟動一個Activity,

Android入門:Activity啟動模式

一、啟動模式介紹   啟動模式簡單地說就是Activity啟動時的策略,在AndroidManifest.xml中的標籤的android:launchMode屬性設定;   啟動模式有4種,分別為standard、singleTop、singleTask、singleInstance; 講解啟動模式之前

android任務棧及activity啟動模式

一、android任務棧 棧:先進後出 佇列:先進先出  任務棧Task中:開啟一個Activity叫進棧 關閉一個activit出棧  任務棧是用來維護Activity的、是用來維護使用者

Activity啟動模式與任務棧(Task)總結分析

最近在總結android基礎問題 比如Activity的四種啟動模式  其中有涉及到任務棧的問題   之前都是一知半解   現在想著用筆記錄下來  可供自己以後參考 android任務棧簡單瞭解 1. android任務棧又稱為Task,它是一個棧結構,具有後進先出的特性

Activity的生命週期Activity啟動模式

Activity的七種生命週期方法 void onCreate(); Activity已經被建立 void onStart(); Activity已經顯示在螢幕,但是還沒有得到焦點(不能互動) void onresume(); Acti

onNewIntent呼叫時機及Activity啟動模式

singleInstance:第一次進入:onCreate onStart在棧頂再次進入: onNewIntent不在棧頂再次進入:onNewIntent onRestart onStart按home鍵再次進入:onRestart onStart按返回鍵:onRestart

activity啟動模式詳細分析

分析 四種 sig mage 導致 現在 .com 一個 頂部 1、android中通過任務隊列來管理activity 采用棧的結構就是後進先出 手機裏面如果啟動多個應用就會啟動多個任務棧來管理對應的activity。 主要解決下面的問題:對應的四種

Activity啟動模式onNewIntent()

reat 啟動模式 get 顯示 cti 存在 最好 發送 發生 1:首先,在默認情況下,當您通過Intent啟到一個Activity的時候,就算已經存在一個相同的正在運行的Activity,系統都會創建一個新的Activity實例並顯示出來。為了不讓Activity實例化