熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

Task和Activity相關(zz)

2022-06-13   來源: JSP教程 

    android:allowTaskReparenting

  用來標記Activity能否從啟動的Task移動到有著affinity的Task(當這個Task進入到前台時)——true表示能移動false表示它必須呆在啟動時呆在的那個Task裡

  如果這個特性沒有被設定設定到<application>元素上的allowTaskReparenting特性的值會應用到Activity上默認值為false

  一般來說當Activity啟動後它就與啟動它的Task關聯並且在那裡耗盡它的整個生命周期當當前的Task不再顯示時你可以使用這個特性來強制Activity移動到有著affinity的Task中典型用法是把一個應用程序的Activity移到另一個應用程序的主Task中

  例如如果e-mail中包含一個web頁的鏈接點擊它就會啟動一個Activity來顯示這個頁面這個Activity是由Browser應用程序定義的但是現在它作為e-mail Task的一部分如果它重新宿主到Browser Task裡當Browser下一次進入到前台時它就能被看見並且當e-mail Task再次進入前台時就看不到它了

  Actvity的affinity是由taskAffinity特性定義的Task的affinity是通過讀取根Activity的affinity決定因此根據定義根Activity總是位於相同affinity的Task裡由於啟動模式為singleTasksingleInstance的Activity只能位於Task的底部因此重新宿主只能限於standardsingleTop模式

  android:alwaysRetainTaskState

  用來標記Activity所在的Task的狀態是否總是由系統來保持——true表示總是false表示在某種情形下允許系統恢復Task到它的初始化狀態默認值是false這個特性只針對Task的根Activity有意義對其它Activity來說忽略之

  一般來說特定的情形如當用戶從主畫面重新選擇這個Task時系統會對這個Task進行清理(從stack中刪除位於根Activity之上的所有Activivity)典型的情況當用戶有一段時間沒有訪問這個Task時也會這麼做例如分鐘

  然而當這個特性設為true用戶總是能回到這個Task的最新狀態無論他們是如何啟動的這非常有用例如像Browser應用程序這裡有很多的狀態(例如多個打開的Tab)用戶不想丟失這些狀態

  android:clearTaskOnLaunch

  用來標記是否從Task中清除所有的Activity除了根Activity外(每當從主畫面重新啟動時)——true表示總是清除至它的根Activityfalse表示不默認值是false這個特性只對啟動一個新的Task的Activity(根Activity)有意義對Task中其它的Activity忽略

  當這個值為true每次用戶重新啟動這個Task時都會進入到它的根Activity中不管這個Task最後在做些什麼也不管用戶是使用BACK還是HOME離開的當這個值為false可能會在一些情形下(參考alwaysRetainTaskState特性)清除Task的Activity但不總是

  假設某人從主畫面啟動了Activity P並從那裡遷移至Activity Q接下來用戶按下HOME然後返回Activity P一般用戶可能見到的是Activity Q因為它是P的Task中最後工作的內容然而如果P設定這個特性為true當用戶按下HOME並使這個Task再次進入前台時其上的所有的Activity(在這裡是Q)都將被清除因此當返回到這個Task時用戶只能看到P

  如果這個特性和allowTaskReparenting都設定為true那些能重新宿主的Activity會移動到共享affinity的Task中剩下的Activity都將被拋棄如上所述

  android:finishOnTaskLaunch

  用來標記當用戶再次啟動它的Task(在主畫面選擇這個Task)時已經存在的Activity實例是否要關閉(結束)——true表示應該關閉false表示不關閉默認值是false

  如果這個特性和allowTaskReparenting都設定為true這個特性勝出Activity的affinity忽略這個Activity不會重新宿主但是會銷毀

  android:launchMode

  用於指示Activity如何啟動這裡有四種模式與Intent對象中的Activity Flags(FLAG_ACTIVITY_*變量)共同作用來決定Activity如何啟動來處理Intent它們是

  standard

  singleTop

  singleTask

  singleInstance

  默認模式是standard

  這些模式可以分成兩大組別standardsingleTop一組singleTasksingleInstance一組具有standardsingleTop啟動模式的Activity可以實例化很多次這些實例可以屬於任何Task並且可以位於Activity stack的任何位置典型的情況是它們會進入調用startActivity()的Task(除非Intent對象包含FLAG_ACTIVITY_NEW_TASK標志在這種情況下會選擇一個不同的Task——參考taskAffinity特性)

  相反的singleTasksingleInstance只能啟動一個Task它們總是位於Activity stack的底部甚至設備一次只能擁有一個Activity的實例——只有一個這樣的Task

  standardsingleTop模式只在一種情況下有差別每次有一個新的啟動standardActivity的Intent就會創建一個新的實例來響應這個Intent每個實例處理一個Intent相似的一個singleTop的Activity實例也有可能被創建來處理新的Intent然而如果目標Task已經有一個存在的實例並且位於stack的頂部那麼這個實例就會接收到這個新的Intent(調用onNewIntent())不會創建新的實例在其他情況下——例如如果存在的singleTop的Activity實例在目標Task中但不是在stack的頂部或者它在一個stack的頂部但不是在目標Task中——新的實例都會被創建並壓入stack中

  singleTasksingleInstance模式也只在一種情況下有差別singleTaskActivity允許其它Activity成為它的Task的部分它位於Activity stack的底部其它Activity(必須是standardsingleTopActivity)可以啟動加入到相同的Task中singleInstanceActivity換句話說不允許其它Activity成為它的Task的部分它是Task中的唯一Activity如果它啟動其它的Activity這個Activity會被放置到另一個task中——好像Intent中包含了FLAG_ACTIVITY_NEW_TASK標志

  android:noHistory

  用於標記當用戶從Activity上離開並且它在屏幕上不再可見時Activity是否從Activity stack中清除並結束(調用finish()方法)——true表示它應該關閉false表示不需要默認值是false

  true值意味著Activity不會留下歷史痕跡因為它不會在Activity stack的Task中保留因此用戶不能返回它

  android:taskAffinity

  Activity為Task擁有的一個affinity擁有相同的affinity的Activity理論上屬於相同的Task(在用戶的角度是相同的應用程序Task的affinity是由它的根Activity決定的

  affinity決定兩件事情——Activity重新宿主的Task(參考allowTaskReparenting特性)和使用FLAG_ACTIVITY_NEW_TASK標志啟動的Activity宿主的Task

  默認情況一個應用程序中的所有Activity都擁有相同的affinity捏可以設定這個特性來重組它們甚至可以把不同應用程序中定義的Activity放置到相同的Task中為了明確Activity不宿主特定的Task設定該特性為空的字符串

  如果這個特性沒有設置Activity將從應用程序的設定那裡繼承下來(參考<application>元素的taskAffinity特性)應用程序默認的affinity的名字是<manifest>元素中設定的package名

  FLAG_ACTIVITY_BROUGHT_TO_FRONT

  這個標志一般不是由程序代碼設置的如在launchMode中設置singleTask模式時系統幫你設定

  FLAG_ACTIVITY_CLEAR_TOP

  如果設置並且這個Activity已經在當前的Task中運行因此不再是重新啟動一個這個Activity的實例而是在這個Activity上方的所有Activity都將關閉然後這個Intent會作為一個新的Intent投遞到老的Activity(現在位於頂端)中

  例如假設一個Task中包含這些ActivityABCD如果D調用了startActivity()並且包含一個指向Activity B的Intent那麼C和D都將結束然後B接收到這個Intent因此目前stack的狀況是AB

  上例中正在運行的Activity B既可以在onNewIntent()中接收到這個新的Intent也可以把自己關閉然後重新啟動來接收這個Intent如果它的啟動模式聲明為multiple(默認值)並且你沒有在這個Intent中設置FLAG_ACTIVITY_SINGLE_TOP標志那麼它將關閉然後重新創建對於其它的啟動模式或者在這個Intent中設置FLAG_ACTIVITY_SINGLE_TOP標志都將把這個Intent投遞到當前這個實例的onNewIntent()中

  這個啟動模式還可以與FLAG_ACTIVITY_NEW_TASK結合起來使用用於啟動一個Task中的根Activity它會把那個Task中任何運行的實例帶入前台然後清除它直到根Activity這非常有用例如當從Notification Manager處啟動一個Activity

  FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET

  如果設置這將在Task的Activity stack中設置一個還原點當Task恢復時需要清理Activity也就是說下一次Task帶著FLAG_ACTIVITY_RESET_TASK_IF_NEEDED標記進入前台時(典型的操作是用戶在主畫面重啟它)這個Activity和它之上的都將關閉以至於用戶不能再返回到它們但是可以回到之前的Activity

  這在你的程序有分割點的時候很有用例如一個email應用程序可能有一個操作是查看一個附件需要啟動圖片浏覽Activity來顯示這個Activity應該作為email應用程序Task的一部分因為這是用戶在這個Task中觸發的操作然而當用戶離開這個Task然後從主畫面選擇email app我們可能希望回到查看的會話中但不是查看圖片附件因為這讓人困惑通過在啟動圖片浏覽時設定這個標志浏覽及其它啟動的Activity在下次用戶返回到mail程序時都將全部清除

  FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS

  如果設置新的Activity不會在最近啟動的Activity的列表中保存

  FLAG_ACTIVITY_FORWARD_RESULT

  如果設置並且這個Intent用於從一個存在的Activity啟動一個新的Activity那麼這個作為答復目標的Activity將會傳到這個新的Activity中這種方式下新的Activity可以調用setResult(int)並且這個結果值將發送給那個作為答復目標的Activity

  FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY

  這個標志一般不由應用程序代碼設置如果這個Activity是從歷史記錄裡啟動的(常按HOME鍵)那麼系統會幫你設定

  FLAG_ACTIVITY_MULTIPLE_TASK

  不要使用這個標志除非你自己實現了應用程序啟動器與FLAG_ACTIVITY_NEW_TASK結合起來使用可以禁用把已存的Task送入前台的行為當設置時新的Task總是會啟動來處理Intent而不管這是是否已經有一個Task可以處理相同的事情

  由於默認的系統不包含圖形Task管理功能因此你不應該使用這個標志除非你提供給用戶一種方式可以返回到已經啟動的Task

  如果FLAG_ACTIVITY_NEW_TASK標志沒有設置這個標志被忽略

  FLAG_ACTIVITY_NEW_TASK

  如果設置這個Activity會成為歷史stack中一個新Task的開始一個Task(從啟動它的Activity到下一個Task中的Activity)定義了用戶可以遷移的Activity原子組Task可以移動到前台和後台在某個特定Task中的所有Activity總是保持相同的次序

  這個標志一般用於呈現啟動類型的行為它們提供用戶一系列可以單獨完成的事情與啟動它們的Activity完全無關

  使用這個標志如果正在啟動的Activity的Task已經在運行的話那麼新的Activity將不會啟動代替的當前Task會簡單的移入前台參考FLAG_ACTIVITY_MULTIPLE_TASK標志可以禁用這一行為

  這個標志不能用於調用方對已經啟動的Activity請求結果

  FLAG_ACTIVITY_NO_ANIMATION

  如果在Intent中設置並傳遞給ContextstartActivity()的話這個標志將阻止系統進入下一個Activity時應用Acitivity遷移動畫這並不意味著動畫將永不運行——如果另一個Activity在啟動顯示之前沒有指定這個標志那麼動畫將被應用這個標志可以很好的用於執行一連串的操作而動畫被看作是更高一級的事件的驅動

  FLAG_ACTIVITY_NO_HISTORY

  如果設置新的Activity將不再歷史stack中保留用戶一離開它這個Activity就關閉了這也可以通過設置noHistory特性

  FLAG_ACTIVITY_NO_USER_ACTION

  如果設置作為新啟動的Activity進入前台時這個標志將在Activity暫停之前阻止從最前方的Activity回調的onUserLeaveHint()

  典型的一個Activity可以依賴這個回調指明顯式的用戶動作引起的Activity移出後台這個回調在Activity的生命周期中標記一個合適的點並關閉一些Notification

  如果一個Activity通過非用戶驅動的事件如來電或鬧鐘啟動的這個標志也應該傳遞給ContextstartActivity保證暫停的Activity不認為用戶已經知曉其Notification

  FLAG_ACTIVITY_PREVIOUS_IS_TOP

  If set and this intent is being used to launch a new activity from an existing one the current activity will not be counted as the top activity for deciding whether the new intent should be delivered to the top instead of starting a new one The previous activity will be used as the top with the assumption being that the current activity will finish itself immediately

  FLAG_ACTIVITY_REORDER_TO_FRONT

  如果在Intent中設置並傳遞給ContextstartActivity()這個標志將引發已經運行的Activity移動到歷史stack的頂端

  例如假設一個Task由四個Activity組成ABCD如果D調用startActivity()來啟動Activity B那麼B會移動到歷史stack的頂端現在的次序變成ACDB如果FLAG_ACTIVITY_CLEAR_TOP標志也設置的話那麼這個標志將被忽略

  FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

  If set and this activity is either being started in a new task or bringing to the top an existing task then it will be launched as the front door of the task This will result in the application of any affinities needed to have that task in the proper state (either moving activities to or from it) or simply resetting that task to its initial state if needed

  FLAG_ACTIVITY_SINGLE_TOP

  如果設置當這個Activity位於歷史stack的頂端運行時不再啟動一個新的

  Activity和Task

  之前提到的一個Activity可以啟動另一個即便是定義在不同應用程序中的Activity例如假設你想讓用戶顯示一些地方的街景而這裡已經有一個Activity可以做到這一點因此你的Activity所需要做的只是在Intent對象中添加必要的信息並傳遞給startActivity()地圖浏覽將會顯示你的地圖當用戶按下BACK鍵你的Activity會再次出現在屏幕上

  對於用戶來說看起來好像是地圖浏覽與你的Activity一樣屬於相同的應用程序即便是它定義在其它的應用程序裡並運行在那個應用程序的進程裡Android通過將這兩個Activity保存在同一個Task裡來體現這一用戶體驗簡單來說一個Task就是用戶體驗上的一個應用它將相關的Activity組合在一起以stack的方式管理stack中根Activity啟動Task——典型的它就是用戶在應用程序啟動欄中選擇的Activity位於stack頂端的Activity是當前正在運行的——能夠聚焦用戶的動作當一個Activity啟動另一個新的Activity進入stack它成為正在運行的Activity之前的Activity仍保留在stack中當用戶按下BACK鍵當前的Activity從stack中退出之前的那個成為正在運行的Activity

  stack包含對象因此如果一個Task中有多個同一個Activity的實例時——多個地圖浏覽例如——stack為每個實例擁有一個獨立的入口位於stack中的Activity不會重新調整只是進入和退出

  一個Task就是一組Activity不是一個類或者在manifest中定義的一個元素因此沒有辦法為Task設置獨立於它的Activity的屬性值Task的值作為整體在根Activity中設置例如下一個章節會討論Task的affinity那個值就是從Task中的根Activity中讀取的

  Task中的所有Activity作為一個單元一起移動整個Task(整個Activity stack)可以進入前台或者退到後台例如假設當前Task中的stack中有個Activity——個位於當前Activity下方用戶按下HOME鍵進入到應用程序啟動欄然後選擇一個新的應用程序(實際上一個新的Task)當前Task退到後台並且新Task中的根Activity會顯示出來然後經過一段時間後用戶回到Home畫面然後再次選擇前一個應用程序(前一個Task)那個擁有個Activity的Task會進入前台當用戶按下BACK鍵屏幕不會顯示用戶剛剛離開的Activity(前一個Task的根Activity)而是這個stack中的頂端Activity移除相同Task中的前一個Activity會顯示出來

  剛才描述的行為是Activity和Task的默認行為但有方法來完全改變它Task之間的關聯和一個Task中的一個Activity行為受啟動Activity的Intent對象中設置的Flag和manifest文件中Activity的<activity>元素的特性值交互控制調用者和響應者都有權決定如何發生

  核心的Intent Flag有

  FLAG_ACTIVITY_NEW_TASK

  FLAG_ACTIVITY_CLEAR_TOP

  FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

  FLAG_ACTIVITY_SINGLE_TOP

  核心的<activity>特性有

  taskAffinity

  launchMode

  allowTaskReparenting

  clearTaskOnLaunch

  alwaysRetainTaskState

  finishOnTaskLaunch

  接下來的章節將描述一些Flag和特性的用法如何相互影響以及在使用時的建議

  Affinity和新Task

  默認情況下一個應用程序中的所有Activity都有affinity——也就是說屬於同一個Task中所有Activity有一個設定然而每個Activity都可以在<activity>元素的taskAffinity特性上設置單獨的值定義在不同應用程序中的Activity可以共享同一個affinity或者定義在同一個應用程序中的Activity設置不同的affinityAffinity在兩種環境下工作Intent對象包含FLAG_ACTIVITY_NEW_TASK標志和Activity的allowTaskReparenting特性設置為true

  FLAG_ACTIVITY_NEW_TASK:

  之前描述的一個Activity一般通過調用startActivity()啟動並加入到Task中它同調用者一樣進入同一個Task然而如果傳遞給startActivity()的Intent對象中包含FLAG_ACTIVITY_NEW_TASK時系統會搜索一個新的Task來容納新的Activity通常如標志的名字所示是一個新的Task然而並不是必須是如果已經存在一個Task與新Activity的affinity相同這個Activity就會加入到那個Task中如果不是啟動一個新的Task

  allowTaskReparenting

  如果一個Activity的allowTaskReparenting特性設置為true它就能從啟動的Task中移到有著相同affinity的Task(這個Task進入到前台的時候)例如在一個旅游的程序中定義了一個可以報告選擇城市的天氣情況的Activity它和同一個應用程序的其它Activity一樣有著相同的Affinity(默認的Affinity)並且它允許重新宿主你的Activity中的一個啟動了天氣預報因此它初始化到和你Activity相同的Task中然而當旅游應用程序下一次進入到前台時天氣預報那個Activity將會重新編排並在那個Task中顯示

  如果從用戶的角度出發一個apk文件包含多個應用的話你可能希望為關聯的Activity設置不同的affinity

  Launch Mode

  這裡種不同的啟動模式可以設置到<activity>元素的launchMode特性上

  standard(默認模式)

  singleTop

  singleTask

  singleInstance

  這些模式有以下四點區別

  l 哪個Task將容納響應Intent的Activity對於standardsingleTop來說是產生Intent的那個Task(並調用startActivity())——除非Intent對象包含FLAG_ACTIVITY_NEW_TASK在那種情況下不同的Task將被選擇Affinity和新Task中描述的那樣對比而言singleTasksingleInstance指示Activity總是一個Task的根它們定義一個Task它們不會加入到另一個Task中

  l 是否有多個Activity的實例standardsingleTop可以實例化多次它們可以屬於多個Task一個特定的Task可以有相同Activity的多個實例對比而言singleTasksingleInstance只能有一個實例因為這些Activity只能位於Task的底部這一限制意味著在設備的某個時間不會出現這樣Task的多個實例

  l 是否可以在同一個Task中擁有其它的ActivitysingleInstanceActivity保持單身在它的Task中它是僅有的Activity如果它啟動另一個Activity那個Activity將會放入到不同的Task中而不管它的啟動模式——好像FLAG_ACTIVITY_NEW_TASK在Intent中一樣對於其它方面singleInstance等同於singleTask其它三個模式允許多個Activity加入到這個Task中singleTaskActivity總是位於Task的底部但它可以啟動其它的Activity並放入到它的Task中standardsingleTop的Activity可以出現在stack的任何地方

  l 是否一個新的實例啟動來處理新的Intent對於默認的standard來說都是創建一個新的實例來響應新的Intent每個實例處理一個Intent對於singleTop來說如果它位於目標Task的頂端那麼已經存在的實例就可以重復使用來處理這個新的Intent如果它不在頂端那麼它就不能重復使用替代的新的實例將創建來響應新的Intent並進入到stack中

  例如假設一個Task的Activity stack中包含根Activity A和其它Activity BCD並且D位於頂端因此stack是ABCD有一個Intent來了它要啟動D類型的Activity如果D有默認的standard啟動模式那麼一個新的實例將被啟動並且stack變成ABCDD然而如果D的啟動模式singleTop已經存在的實例將去處理新來的Intent(因為它正好處在stack的頂端)並且stack依舊是ABCD

  換句話說如果來臨的Intent是沖著B類型的那麼B類型的實例將被創建啟動而不管B的模式是standardsingleTop(因為B不處在stack的頂端)因此stack將會是ABCDB

  之前提到的設備上不會出現超過一個實例的singleTasksingleInstanceActivity因此那個實例都將去處理所有新來的IntentsingleInstanceActivity總是位於stack的頂端(因為它是task中唯一的Activity)因此它總是處於能處理Intent的位置然而singleTaskActivity可能有或沒有其它Activity處於它的上方如果有它就不處於能處理Intent的位置那麼這個Intent將被丟棄(即使Intent被丟棄了它的到來會引發那個Task進入到前台在那裡它會繼續保留

  當一個存在的Activity請求去處理一個新的Intent時Intent對象將傳到該Activity的onNewIntent()的方法中(原來啟動Activity的Intent對象可以通過調用getIntent()得到

  注意當一個新的實例創建來處理新的Intent時用戶可以按下BACK鍵返回到之前的狀態(前一個Activity)但一個存在的實例來處理新的Intent時用戶不能按下BACK鍵返回到新Intent到來之前的狀態

  清除stack

  如果用戶離開Task很長一段時間系統會清除Task中的所有Activity除根Activity外當用戶再次返回到這個Task時和用戶離開時一樣僅僅只是初始化Activity呈現這樣做的意圖是經過一些時間後用戶可能已經忘記之前正在做的事情並且打算回到Task開始些新的時期

  這是默認情況這裡有一些Activity特性可以用於控制這一行為並且修改它

  alwaysRetainTaskState

  如果Task的根Activity的這個特性設置為true上面描述的默認行為不會發生Task保留所有的Activity即便是經過很長一段時間

  clearTaskOnLaunch

  如果Task的根Activity的這個特性設置為true當用戶離開Task並返回時stack會清除直到根Activity換句話說它是alwaysRetainTaskState的另一個極端用戶總是回到Task的初始化狀態即便是一個短暫的離開

  finishOnTaskLaunch

  這個特性和clearTaskOnLaunch相似但它針對單個Activity不是整個Task它能使任何Activity消失包括根Activity當它設置為true這個Activity僅在當前會話期間保持為Task的部分如果用戶離開並再次返回到這個Task它就不再顯示了

  這裡還有其它的方式可以強制Activity從stack中移除如果Intent對象中包含FLAG_ACTIVITY_CLEAR_TOP標志並且目標Task中已經有一個這個類型Activity的實例而且這個實例應該處理這個Intent那麼位於其上的Activity都將移除這樣這個Activity就能在stack的頂端並響應這個Intent如果這個Activity的啟動模式設定為standard它也會從stack中清除然後新的實例啟動來響應這個Intent這是因為當啟動模式設定為standard總是會創建一個新的實例來響應新的Intent

  FLAG_ACTIVITY_CLEAR_TOP經常與FLAG_ACTIVITY_NEW_TASK結合起來使用當一起使用時這些標志可以定位其它Task中已經存在的Activity並且把它置於可以響應Intent的位置

  啟動Task

  如果一個Activity的Intent Filter的action為androidintentactionMAINcategory為androidintentcategoryLAUNCHER它就可以作為一個Task的入口點有這種類型的Filter會在導致這個Activity在應用程序啟動欄顯示一個圖標和標簽給用戶提供一個方式可以啟動這個Task和在任何時候可以再次回到這個Task

  第二個能力很重要用戶一定可以離開一個Task然後可以再次回到它基於這個原因兩個啟動模式singleTasksingleInstance應該只在有MAIN和LAUNCHER的Activity上使用例如假設這個Filter沒有的話一個Intent啟動了一個singleTaskActivity初始化一個新的Task然後用戶花費了一些時間在它上面然後用戶按下HOME鍵現在這個Task處於後台並且被HOME畫面遮蓋由於它不能在應用程序啟動欄顯示用戶就沒有辦法可以返回它

  在面對FLAG_ACTIVITY_NEW_TASK時也有相似的困難如果這個標志導致一個Activity啟動了一個新的Task並且用戶按下HOME鍵離開它這裡必須有方法可以再次回到它一些機能(如Notification Manager)總是在外部的Task中啟動Activity而不是作為自己的一部分因此它總是把FLAG_ACTIVITY_NEW_TASK標志放入Intent然後傳遞給startActivity()如果你的Activity可能會被外部的機能(可能使用這個標志)調用注意用戶可以額外的方式可以返回到啟動的Task

  如果你不想用戶回到某個Activity可以把<activity>元素的finishOnTaskLaunch設置為true


From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19430.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.