偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

詳細介紹有關(guān)Android啟動模式問題

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

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

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

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

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

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

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

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

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

相對的,, "singleTask" 和 "singleInstance" 模式的activities限制為只能有一個實例。因為這些activity在任務(wù)的根,這表示,任務(wù)也只有一個。同一個任務(wù)中是否可以有其他的activity: "singleInstance" 模式的activity所在的任務(wù)中不能有其他的activity ,如果啟動其他activity。

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

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

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

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

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

就像上面提到的,"singleTask" 或 "singleInstance" 的activity只有1個實例,所以這個實例要處理所有的intent。"singleInstance" 的activity永遠在任務(wù)堆棧的頂部(因為它是任務(wù)中的***個activity),所以這個實例處理所有的intent??赡苡衅渌腶ctivity在"singleTask" 的activity的頂部,因此這個實例不會處理intent請求,因此intent的請求會失??;(即使失敗,intent也會激活這個程序)

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

【編輯推薦】

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

2010-02-06 09:45:49

Android屬性

2010-02-22 13:20:58

Python中文問題

2010-03-02 09:13:55

Android手機系統(tǒng)

2010-03-09 16:38:22

Linux grub啟

2010-03-10 11:26:29

交換機配置

2010-03-03 17:50:45

Android圖形界面

2009-12-25 16:51:37

ADO參數(shù)

2009-12-16 10:57:29

VS插件

2010-02-23 10:32:20

Python 腳本

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文件

2010-02-06 15:19:35

2010-03-05 16:58:02

Android Mar

2023-12-05 16:01:12

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

2010-03-19 11:07:57

點對點無線橋接模式

2010-02-05 18:04:36

Android程序框架

2010-02-04 16:43:18

Android 配置問

2011-07-21 17:02:48

JAVA模式框架
點贊
收藏

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