青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

大龍的博客

常用鏈接

統計

最新評論

Task與Activity詳解 --- 轉

1. Task是包含一系列Activity的堆棧, 遵循先進后出原則. 

 

2. Task默認行為: 

 

    (1) 前提: Activity A和Activity B在同一個應用中. 

 

         操作: Activity A啟動開僻Task堆棧(堆棧狀態: A), 在Activity A中啟動Activity B(堆棧狀態: AB), 按下BACK返回鍵(堆棧狀態: A). 

 

    (2) 前提: Activity A和Activity B在同一個應用中, 應用名稱為"TaskOne應用".

 

         操作: 在Launcher中單擊"TaskOne應用"圖標, Activity A啟動開僻Task堆棧, 命名為TaskA(TaskA堆棧狀態: A),

                 在Activity A中啟動Activity B(TaskA堆棧狀態: AB), 長按Home鍵, 返回Launcher, 啟動其它應用(如:電子書),

                 開僻一個新Task堆棧, 命名: TaskB, 長按Home健, 返回Launcher, 單擊"TaskOne應用"圖標, 此時TaskA堆棧返回前臺,

                 Activity B為棧頂應用, 供用戶使用. 

 

    (3) 前提: Activity A在名稱為"TaskOne應用"的應用中, Activity C在名稱為"TaskTwo應用"的應用中.

 

         操作: 在Launcher中單擊"TaskOne應用"圖標, Activity A啟動開僻Task堆棧, 命名為TaskA(TaskA堆棧狀態: A),

                 在Activity A中啟動Activity C(TaskA堆棧狀態: AC),長按Home鍵, 返回Launcher, 啟動"TaskTwo應用"即Activity C,

                 開僻新的Task堆棧, 命名為TaskB, 按BACK鍵返回Launcher, 單擊"TaskOne應用"圖標, 此時TaskA堆棧返回前臺,

                 Activity B為棧頂應用, 供用戶使用. 

 

3. Intent FLAG介紹:

 

    (1) FLAG_ACTIVITY_NEW_TASK: 

 

         a. 前提: Activity A和Activity B在同一個應用中. 

 

             操作: Activity A啟動開僻Task堆棧(堆棧狀態: A), 在Activity A中啟動Activity B, 啟動Activity B的Intent的Flag設為

                     FLAG_ACTIVITY_NEW_TASK, Activity B被壓入Activity A所在堆棧(堆棧狀態: AB).

 

             原因: 默認情況下同一個應用中的所有Activity擁有相同的關系(taskAffinity).

 

         b. 前提: Activity A在名稱為"TaskOne應用"的應用中, Activity C和Activity D在名稱為"TaskTwo應用"的應用中.

 

             操作1: 在Launcher中單擊"TaskOne應用"圖標, Activity A啟動開僻Task堆棧, 命名為TaskA(TaskA堆棧狀態: A),

                       在Activity A中啟動Activity C, 啟動Activity C的Intent的Flag設為FLAG_ACTIVITY_NEW_TASK,

                       Android系統會為Activity C開僻一個新的Task, 命名為TaskB(TaskB堆棧狀態: C), 長按Home鍵, 選擇TaskA,

                       Activity A回到前臺, 再次啟動Activity C, 這時TaskB回到前臺, Activity C顯示, 供用戶使用, 即:

                       包含FLAG_ACTIVITY_NEW_TASK的Intent啟動Activity的Task正在運行, 則不會為該Activity創建新的Task,

                       而是將原有的Task返回到前臺顯示.

 

             操作2: 在Launcher中單擊"TaskOne應用"圖標, Activity A啟動開僻Task堆棧, 命名為TaskA(TaskA堆棧狀態: A),

                       在Activity A中啟動Activity C,啟動Activity C的Intent的Flag設為FLAG_ACTIVITY_NEW_TASK,

                       Android系統會為Activity C開僻一個新的Task, 命名為TaskB(TaskB堆棧狀態: C),  在Activity C中啟動

                       Activity D(TaskB的狀態: CD) 長按Home鍵, 選擇TaskA, Activity A回到前臺, 再次啟動Activity C,

                       這時TaskB回到前臺, Activity D顯示,供用戶使用.

 

    (2) FLAG_ACTIVITY_CLEAR_TOP:

 

         前提: Activity A, Activity B, Activity C和Activity D在同一個應用中.

 

         操作: Activity A啟動開僻Task堆棧(堆棧狀態: A), 在Activity A中啟動Activity B(堆棧狀態: AB), 在Activity B中啟動

                 Activity C(堆棧狀態: ABC), 在Activity C中啟動Activity D(堆棧狀態: ABCD), 在Activity D中啟動Activity B,

                 啟動Activity B的Intent的Flag設置為FLAG_ACTIVITY_CLEAR_TOP, (堆棧狀態: AB).

 

    (3) FLAG_ACTIVITY_BROUGHT_TO_FRONT:

 

         前提: Activity A在名稱為"TaskOne應用"的應用中, Activity C和Activity D在名稱為"TaskTwo應用"的應用中.

 

         操作: 在Launcher中單擊"TaskOne應用"圖標, Activity A啟動開僻Task堆棧, 命名為TaskA(TaskA堆棧狀態: A),

                 在Activity A中啟動Activity C,啟動Activity C的Intent的Flag設為FLAG_ACTIVITY_NEW_TASK,

                 Android系統會為Activity C開僻一個新的Task, 命名為TaskB(TaskB堆棧狀態: C), 在Activity C中啟動

                 Activity D(TaskB的堆棧狀態: CD), 長按Home鍵, 選擇TaskA, Activity A回到前臺, 在Activity A中再次啟動Activity C,

                 在啟動Activity C的Intent中設置Flag為FLAG_ACTIVITY_BROUGHT_TO_FRONT, TaskB回到前臺,

                 Activity C顯示, (TaskB的堆棧狀態: C).

 

    (4) FLAG_ACTIVITY_MULTIPLE_TASK:

 

         與FLAG_ACTIVITY_NEW_TASK結合使用, 首先在Intent中設置FLAG_ACTIVITY_NEW_TASK, 打開Activity,

         則啟動一個新Task, 接著在Intent中設置FLAG_ACTIVITY_MULTIPLE_TASK, 再次打開同一個Activity,則還會新啟動一個Task.

 

    (5) FLAG_ACTIVITY_SINGLE_TOP:

 

         當前Task堆棧中存在ABCD四個Activity, A是棧頂Activity, D為棧底Activity, 存在打開A的Intent中設置了

         FLAG_ACTIVITY_SINGLE_TOP標志, 則會使用棧頂A, 而不會從新New A.

 

    (6) FLAG_ACTIVITY_RESET_TASK_IF_NEEDED:

 

         例: 存在Activity A, Activity B, Activity C, Activity A啟動開僻Task堆棧, 命名為TaskA(TaskA堆棧狀態: A),

              在Activity A中啟動Activity B(TaskA堆棧狀態: AB), 接著Activity B啟動Activity C(TaskA堆棧狀態: ABC),

              啟動Activity C的Intent中設置FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET標題, 這樣TaskA中有一個還原點,

              當有包含FLAG_ACTIVITY_RESET_TASK_IF_NEEDED的Intent請求TaskA堆棧時(比如請求Activity A)

              系統就會將還原點以上的Activity清除, TaskA堆棧中只剩下了AB.

 

4. launchMode介紹:

 

    (1) standard: 

 

         如果啟動此Activity的Intent中沒有設置FLAG_ACTIVITY_NEW_TASK標志, 則這個Activity與啟動他的Activity在同一個Task中,

         如果設置了Activity請參考上面FLAG_ACTIVITY_NEW_TASK的詳細說明,"launchMode"設置為"standard"的

         Activity可以被實例化多次, 可以在Task中的任何位置, 對于一個新的Intent請求就會實例化一次.

 

   (2) singleTop: 

 

         如果啟動此Activity的Intent中沒有設置FLAG_ACTIVITY_NEW_TASK標志, 則這個Activity與啟動他的Activity在同一個Task中,

         如果設置了Activity請參考上面FLAG_ACTIVITY_NEW_TASK的詳細說明,"launchMode"設置為"singleTop"的Activity可以被

         實例化多次,  可以在Task中的任何位置, 對于一個新的Intent請求如果在Task棧頂, 則會用棧頂的Activity響影Intent請求,

         而不會重新實例化對象接收請求, 如果沒有在棧頂, 則會實例化一個新的對象接收Intent請求.

 

   (3) singleTask: 

 

        "launchMode"設置為"singleTask"的Activity總是在棧底, 只能被實例化一次, 它允許其它Activity壓入"singleTask"的Activity

         所在的Task棧,如果有新的Intent請求有此標志的Activity, 則系統會清除有此標志的Task棧中的全部Activity,并把此Activity顯示出來.

 

   (4) singleInstance: 

 

         launchMode"設置為"singleInstance"的Activity總是在棧底, 只能被實例化一次, 不允許其它的Activity壓入"singleInstance"

         的Activity所在Task棧,  即整個Task棧中只能有這么一個Activity.

 

5. taskAffinity屬性: 

 

   (1) taskAffinity屬性應和FLAG_ACTIVITY_NEW_TASK標志及allowTaskReparenting屬性結合使用, 如果只使用taskAffinity屬性,

        請參考上面Task默認的行為.

 

   (2) 與FLAG_ACTIVITY_NEW_TASK標志結合:

 

       a. 前題: Activity A和Activity B在同一個應用中, Activity A與Activity B設置不同的taskAffinity屬性.

 

           操作: Activity A啟動開僻Task堆棧,命名為TaskA(TaskA堆棧狀態: A), 在Activity A中啟動Activity B, 啟動Activity B

                   的Intent中設置FLAG_ACTIVITY_NEW_TASK標志,這時系統會新開僻一個Task堆棧,TaskB(TaskB堆棧狀態: B).

 

       b. 前題: Activity A在"TaskOne應用"中, Activity C在"TaskTwo應用"中, Activity A和ActivityC設置了相同的taskAffinity屬性.

 

           操作: Activity A啟動開僻Task堆棧,命名為TaskA(TaskA堆棧狀態: A), 在Activity A中啟動Activity C, 啟動Activity C的

                   Intent中設置FLAG_ACTIVITY_NEW_TASK標志,這時Activity C會壓入與Activity A堆棧相同的TaskA堆棧(TaskA堆棧狀態: AC).

 

   (3) 與allowTaskReparenting屬性:

 

         例: 在"TaskOne應用"中有一個天氣預報Activity A, Activity A與"TaskOne應用"中的其它Activity有默認的關系

              (taskAffinity屬性都沒有設置), 并且allowTaskReparenting屬性設置為true, 現在存在一個"TaskTwo應用

              "啟動了"TaskOne應用"中的天氣預報Activity A,  這時Activity A與"TaskTwo應用"中的Activity在同一個Task,

              命名這個Task堆棧為TaskA, 這時"TaskOne應用"啟動, 并且又打開發天氣預報Activity A, 這時Activity A會從TaskA堆棧中轉移到

              "TaskOne應用"所在的堆棧, 即Activity A可以在多個堆棧中來回轉移.       
   
6. alwaysRetainTaskState屬性:

 

    如果Task堆棧中的Root Activity設置了此屬性值為true, 不管出現任何情況, 一直會保留Task棧中Activity的狀態.

 

7. clearTaskOnLaunch屬性:    

    如果Task堆棧中的Root Activity設置了此屬性值為true, 只要你一離開這個Task棧, 則系統會馬上清理除了Root Activity的全部Activity.

 

8. finishOnTaskLaunch屬性:

 

    如果某Activity設置了finishOnTaskLaunch屬性, 只要你一離開這個Task棧, 則系統會馬上清除這個Activity,

    不管這個Activity在堆棧的任何位置.

posted on 2013-10-31 20:49 大龍 閱讀(280) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美在线一区二区| 亚洲一区二区少妇| 9色精品在线| 亚洲国产精品va在看黑人| 亚洲国产小视频在线观看| 影音先锋日韩资源| 久久综合五月天婷婷伊人| 日韩午夜电影在线观看| 久久久国产成人精品| 欧美视频一区在线观看| 在线不卡亚洲| 亚洲国产成人久久综合| 日韩一级成人av| 国产美女在线精品免费观看| 久久免费的精品国产v∧| 久久人人97超碰精品888| 久久免费观看视频| 欧美性淫爽ww久久久久无| 免费日本视频一区| 国产精品视屏| 亚洲激情一区二区| 欧美激情欧美狂野欧美精品| 久久人人97超碰国产公开结果 | 欧美日韩卡一卡二| 欧美激情精品久久久六区热门 | 亚洲日本免费| 国产日韩欧美不卡| 亚洲人精品午夜| 国产精品入口66mio| 亚洲欧美日韩成人高清在线一区| 欧美成人一二三| 一区二区三区在线免费播放| 在线亚洲伦理| 欧美视频日韩| 久久精品一二三区| 国产毛片一区| 欧美专区日韩视频| 在线观看一区视频| 欧美激情一区二区三区蜜桃视频| 欧美精品在线一区二区三区| 午夜精品影院在线观看| 久久经典综合| 亚洲制服欧美中文字幕中文字幕| 亚洲一区二区三区777| 欧美亚男人的天堂| 99在线精品视频| 亚洲精品韩国| 久久久精品免费视频| 国产真实久久| 欧美一区二区三区婷婷月色| 亚洲一区二区在线免费观看视频 | 国产乱人伦精品一区二区| 一区二区高清在线| 欧美在线二区| 亚洲欧美高清| 国语精品一区| 欧美激情一区二区三区全黄| 99热这里只有精品8| 久久久91精品国产| 亚洲欧美另类综合偷拍| 久久影院午夜论| 欧美一区二区三区免费在线看| 久久午夜电影| 91久久精品国产91性色tv| 午夜欧美大片免费观看| 国精品一区二区三区| 久久久久久久波多野高潮日日 | 国产伦精品一区二区三| 欧美成人一区二区| 欧美福利影院| 中文网丁香综合网| 亚洲国语精品自产拍在线观看| 欧美日韩国产综合视频在线观看 | 亚洲精品欧美激情| 欧美一区二区三区在线播放| 亚洲日本va午夜在线电影| 欧美日韩一区成人| 久久在线免费视频| 欧美一区二区三区免费视频| 亚洲精品偷拍| 欧美在线免费视屏| 欧美一区二区三区免费观看| 99re66热这里只有精品3直播| 国产一区二区三区高清| 国产精品久久| 国产精品美女久久福利网站| 久久久久九九视频| 久久av二区| 一本色道久久综合亚洲精品不| 久久全国免费视频| 欧美成人国产一区二区| 99热在这里有精品免费| 亚洲精品国产精品乱码不99按摩| 亚洲精品视频二区| 午夜精品久久久久久久久久久| 午夜亚洲视频| 欧美aⅴ99久久黑人专区| 亚洲电影免费| 亚洲在线视频免费观看| 久久在线免费观看视频| 欧美日韩一级黄| 伊人久久婷婷色综合98网| 99在线观看免费视频精品观看| 亚洲免费伊人电影在线观看av| 久久久久久久久久久成人| 亚洲电影自拍| 久久久精彩视频| 欧美日韩一区成人| 最新亚洲电影| 欧美成年人视频网站欧美| 亚洲午夜未删减在线观看| 欧美激情国产日韩精品一区18| 国内精品久久久久久久影视蜜臀| 9国产精品视频| 日韩视频在线观看一区二区| 久久久噜噜噜久噜久久| 久久久久久久一区二区| 国产麻豆成人精品| 亚洲欧美精品在线观看| 在线午夜精品自拍| 国产精品激情电影| 欧美在线观看网址综合| 亚洲另类视频| 欧美在线视频免费播放| 亚洲国产视频一区二区| 亚洲一区二区影院| 夜夜嗨av色综合久久久综合网| 性欧美长视频| 国一区二区在线观看| 一区二区久久久久| 美女视频黄免费的久久| 亚洲精品美女在线观看| 国产在线精品二区| 亚洲自拍偷拍网址| 蜜桃av一区二区在线观看| 国产午夜亚洲精品不卡| 久热精品视频在线免费观看| 欧美黄色免费网站| 久久精品人人做人人爽| 欧美v国产在线一区二区三区| 一区二区精品在线观看| 欧美在线免费看| 亚洲国内欧美| 新片速递亚洲合集欧美合集| 国产精品日韩在线| 蜜臀av性久久久久蜜臀aⅴ| 欧美日本精品在线| 欧美va亚洲va日韩∨a综合色| 国产精品久久一卡二卡| 亚洲黄色成人| 亚洲福利视频网站| 久久久精品日韩| 欧美综合国产| 国产精品国产三级国产普通话三级| 蜜臀av性久久久久蜜臀aⅴ| 国产精品性做久久久久久| 99在线热播精品免费99热| 亚洲婷婷在线| 欧美日韩免费观看一区二区三区 | 一本在线高清不卡dvd| 欧美在线播放| 欧美成人精品不卡视频在线观看| 91久久夜色精品国产网站| 国产一区二区三区四区在线观看 | 亚洲影院一区| 国产精品视频导航| 欧美一区二区免费| 欧美va亚洲va香蕉在线| 亚洲国产裸拍裸体视频在线观看乱了中文| 亚洲高清自拍| 欧美日本亚洲韩国国产| 久久久久在线观看| 亚洲欧美日韩国产中文| 在线观看成人小视频| aaa亚洲精品一二三区| 欧美日本高清一区| 久久久水蜜桃av免费网站| 麻豆91精品| 免费视频一区二区三区在线观看| 激情丁香综合| 国产精品扒开腿爽爽爽视频| 亚洲无限乱码一二三四麻| 久久综合九色欧美综合狠狠| 99re热精品| 黄色一区二区三区四区| 欧美日韩大陆在线| 久久婷婷国产综合尤物精品| 一区二区三区www| 欧美激情一区二区久久久| 欧美一区二区日韩| 99精品视频一区| 亚洲人成网站在线播| 国产日韩视频| 国产日韩综合| 国产乱人伦精品一区二区| 国产精品福利网站| 欧美日本精品一区二区三区| 久久综合久久美利坚合众国| 欧美亚洲综合在线| 欧美一区免费|