OnNewIntent呼叫時機

2021-09-17 02:43:31 字數 1501 閱讀 3217

說到onnewintent就牽涉到activity的啟動模式launchmode:

分別是:standard、singletop、singletask、singleinstance

1. standard  

預設啟動模式,每次啟用activity時都會建立activity,並放入任務棧中,永遠不會呼叫onnewintent()。  

2. singletop  

如果在任務的棧頂正好存在該activity的例項, 就重用該例項,並呼叫其onnewintent(),否者就會建立新的例項並放入棧頂(即使棧中已經存在該activity例項,只要不在棧頂,都會建立例項,而不會呼叫onnewintent(),此時就跟standard模式一樣)。  

3. singletask  

如果在棧中已經有該activity的例項,就重用該例項(會呼叫例項的onnewintent())。重用時,會讓該例項回到棧頂,因此在它上面的例項將會被移除棧。如果棧中不存在該例項,將會建立新的例項放入棧中(此時不會呼叫onnewintent())。   

4. singleinstance  

在乙個新棧中建立該activity例項,並讓多個應用共享改棧中的該activity例項。一旦改模式的activity的例項存在於某個棧中,任何應用再啟用改activity時都會重用該棧中的例項,其效果相當於多個應用程式共享乙個應用,不管誰啟用該activity都會進入同乙個應用中。

啟動模式

首次進入

在棧頂二次進入

不在棧頂二次進入

home鍵後進入

back鍵後進入

standard

oncreate onstart

oncreate onstart

oncreate onstart

onrestart onstart

oncreate onstart

singletop

oncreate onstart

onnewintent

onresume

oncreate onstart

onrestart onstart

oncreate onstart

singletask

oncreate onstart

onnewintent

onresume

onnewintent

onrestart onstart

onrestart onstart

oncreate onstart

singleinstance

oncreate onstart

onnewintent

onresume

onnewintent

onrestart onstart

onrestart onstart

oncreate onstart

為了讓getintent()方法獲取到正確的intent物件。在onnewitent方法中需要呼叫setintent(intent intent)方法。

C 拷貝函式呼叫時機

c 中的拷貝構造函式呼叫時機通常有三種情況 示例 include using namespace std class person person int age person const person p 析構函式在釋放記憶體之前呼叫 person public int mage 1.使用乙個已經建...

C 拷貝構造函式呼叫時機

class a 傳入乙個字串代表變數的名字 a string n name n a 拷貝建構函式a const a a 過載 運算子 a operator const a a friend ostream operator ostream os,const a a private string na...

複製建構函式的呼叫時機

每日心得 獨上高樓,望盡天涯路 日期 12.14 學習內容 複製建構函式的呼叫時機 重點 1 用已知變數 去複製 新定義的變數 2 值傳遞的方式給函式引數傳值 3 以值的方式返回區域性物件 4 呼叫複製建構函式後,系統不提供預設建構函式 定義類的時候,需要構造和複製都有 include using ...