自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳細(xì)介紹有關(guān)Android啟動(dòng)模式問題

移動(dòng)開發(fā) Android
一個(gè)類的新實(shí)例是否可以接受,當(dāng)已存在的acitity用來處理Android啟動(dòng)模式的時(shí)候,intent會(huì)引發(fā)activity的onNewIntent() 方法。

當(dāng)Android已經(jīng)轉(zhuǎn)進(jìn)了Android啟動(dòng)模式,首先當(dāng)一個(gè)已經(jīng)存在的activity處理新的intent的時(shí)候,用戶不能按BACK鍵后退了,這都是一些自己總結(jié)出來的成果,歡迎大家學(xué)習(xí)參考。

不同程序的Android啟動(dòng)模式可以共享一個(gè)affinity;同一個(gè)程序的activity可以使用不同的afninity。afninity在符合以下2個(gè)條件的時(shí)候啟動(dòng):當(dāng)啟動(dòng)acitity的Intent中含有FLAG_ACTIVITY_NEW_TASK 節(jié)點(diǎn),或者一個(gè)activity的allowTaskReparenting 屬性設(shè)置為"true"。

之前提到,任務(wù)的默認(rèn)通過startActivity(). 激活的默認(rèn)activity也和其他activity在一個(gè)堆棧里面。但是引發(fā)這個(gè)activity的Intent通過startActivity() 方法傳遞了 FLAG_ACTIVITY_NEW_TASK 節(jié)點(diǎn)。望文知意,這個(gè)節(jié)點(diǎn)表示新的任務(wù)。但是,也不一定;如果任務(wù)中沒有含有此afinity的activity,那么它從默認(rèn)的activity開始。

allowTaskReparenting 節(jié)點(diǎn)如果activity的 allowTaskReparenting 屬性設(shè)置為 "true", 它就可以脫離開始它的任務(wù),然后通過它的afinity指引,走入下一個(gè)任務(wù)。例如,假設(shè)“旅游軟件”有一個(gè)activity可以獲取指定城市的天氣。

這個(gè)activity和此程序中的其他activity有同樣的afinity(默認(rèn)的afinity)。并且允許重新轉(zhuǎn)入另外的任務(wù)。某個(gè)activity開始了天氣預(yù)報(bào)動(dòng)作,它一開始屬于這個(gè)任務(wù);但是旅游程序到前臺(tái)運(yùn)行的時(shí)候,天氣預(yù)報(bào)acivity被分配到旅游程序運(yùn)行。

如果從用戶角度看,一個(gè).apk文件包含許多程序,你必須適當(dāng)?shù)姆峙洳煌腶ffinity給activitis,哪個(gè)任務(wù)將包含intent指定要運(yùn)行的activity:對(duì)于 "standard" 和 "singleTop" 模式,啟動(dòng)activity的intent 。

(即調(diào)用 startActivity()方法的) —除非intent對(duì)象包含F(xiàn)LAG_ACTIVITY_NEW_TASK 節(jié)點(diǎn),如果是的話,會(huì)像上個(gè)章節(jié)描述的一樣, Affinities and new tasks,另外一個(gè)任務(wù)會(huì)承載這個(gè)activity。

相對(duì)的, "singleTask" 和 "singleInstance" 模式使得activity永遠(yuǎn)在tast的根,他們初始化一個(gè)任務(wù),不會(huì)融入到其他任務(wù)中 。activity是否會(huì)有多個(gè)實(shí)例. "standard" 或 "singleTop"模式的activity可以被示例化多次,屬于多個(gè)任務(wù),或者一個(gè)任務(wù)中有多個(gè)此activity的實(shí)例。

相對(duì)的,, "singleTask" 和 "singleInstance" 模式的activities限制為只能有一個(gè)實(shí)例。因?yàn)檫@些activity在任務(wù)的根,這表示,任務(wù)也只有一個(gè)。同一個(gè)任務(wù)中是否可以有其他的activity: "singleInstance" 模式的activity所在的任務(wù)中不能有其他的activity ,如果啟動(dòng)其他activity。

那么其他activity 會(huì)被附加到新的任務(wù)(不管新activity的Android啟動(dòng)模式是什么) — 就像intent使用了 FLAG_ACTIVITY_NEW_TASK 標(biāo)記。在其他方面, "singleInstance" 和 "singleTask"沒有什么區(qū)別。

其他三種模式允許多個(gè)acitvity在同一個(gè)任務(wù)中。singleTask 的activity必須在任務(wù)的根,它可以啟動(dòng)其他設(shè)置到該任務(wù)的activity。而standard" 和 "singleTop"可以用于任務(wù)的任何位置。

一個(gè)類的新實(shí)例是否可以接受、處理其他部分發(fā)來的intent: 默認(rèn)的"standard" 模式可以響應(yīng)任何新的intent。每個(gè)實(shí)例處理一個(gè)intent。 "singleTop" 模式的activity如果在任務(wù)的頂部,則用已有的實(shí)例處理所有請(qǐng)求該實(shí)例的intent;反之創(chuàng)建一個(gè)新的實(shí)例,并壓入任務(wù)的頂部。

例如,一個(gè)任務(wù)包含根activityA,和其他activityB,C,D,D在任務(wù)堆棧的頂部,即堆棧為A-B-C-D. 一個(gè)intent請(qǐng)求D。如果D是"standard" Android啟動(dòng)模式,則D的一個(gè)新實(shí)例被創(chuàng)建,任務(wù)堆棧變?yōu)锳-B-C-D-D. 但是。

如果D的Android啟動(dòng)模式是"singleTop", 則現(xiàn)有的D的實(shí)例來響應(yīng)intent,所以任務(wù)堆棧仍然是A-B-C-D. 另外一種情況,如果intent來請(qǐng)求B,如果B是 "standard" 或者 "singleTop" 模式,B都將創(chuàng)建一個(gè)新的實(shí)例來響應(yīng),則任務(wù)堆棧為 A-B-C-D-B。

就像上面提到的,"singleTask" 或 "singleInstance" 的activity只有1個(gè)實(shí)例,所以這個(gè)實(shí)例要處理所有的intent。"singleInstance" 的activity永遠(yuǎn)在任務(wù)堆棧的頂部(因?yàn)樗侨蝿?wù)中的***個(gè)activity),所以這個(gè)實(shí)例處理所有的intent??赡苡衅渌腶ctivity在"singleTask" 的activity的頂部,因此這個(gè)實(shí)例不會(huì)處理intent請(qǐng)求,因此intent的請(qǐng)求會(huì)失??;(即使失敗,intent也會(huì)激活這個(gè)程序)

注意:當(dāng)一個(gè)新的activity的實(shí)例為了響應(yīng)intent而創(chuàng)建時(shí),用戶可以按BACK鍵回到上一個(gè)狀態(tài)(上一個(gè)activity)。但是當(dāng)一個(gè)已經(jīng)存在的activity處理新的intent的時(shí)候,用戶不能按BACK鍵后退了。

【編輯推薦】

  1. Android應(yīng)用程序組建原理深入剖析
  2. Android SMS短信服務(wù)相關(guān)概念簡述
  3. PythonAndroid數(shù)據(jù)庫相關(guān)代碼解讀
  4. PythonAndroid安裝卸載程序具體操作方法解析
  5. Android應(yīng)用程序的四個(gè)關(guān)鍵點(diǎn)
責(zé)任編輯:chenqingxiang 來源: 博客園
相關(guān)推薦

2010-02-06 09:45:49

Android屬性

2010-03-02 09:13:55

Android手機(jī)系統(tǒng)

2010-02-22 13:20:58

Python中文問題

2010-03-09 16:38:22

Linux grub啟

2010-03-10 11:26:29

交換機(jī)配置

2010-02-23 10:32:20

Python 腳本

2009-12-16 10:57:29

VS插件

2010-03-03 17:50:45

Android圖形界面

2009-12-25 16:51:37

ADO參數(shù)

2010-01-13 13:27:00

C++優(yōu)化

2010-02-06 16:57:43

Android操作系統(tǒng)

2010-03-05 15:58:11

操作系統(tǒng)Android

2011-08-02 18:38:19

MySQLINI文件

2023-12-05 16:01:12

模板方法設(shè)計(jì)模式算法結(jié)構(gòu)

2010-03-19 11:07:57

點(diǎn)對(duì)點(diǎn)無線橋接模式

2010-02-06 15:19:35

2010-03-05 16:58:02

Android Mar

2010-02-04 16:43:18

Android 配置問

2010-02-05 18:04:36

Android程序框架

2024-09-03 10:40:38

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)