成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android應用程序組件Activity的"singleTask"(8)

移動開發(fā) Android
這個函數(shù)無非就是根據(jù)即將要啟動的SubActivity的taskAffinity屬性值在系統(tǒng)中查找這樣的一個Task:Task的affinity 屬性值與即將要啟動的Activity的taskAffinity屬性值一致。

這個函數(shù)無非就是根據(jù)即將要啟動的SubActivity的taskAffinity屬性值在系統(tǒng)中查找這樣的一個Task:Task的affinity 屬性值與即將要啟動的Activity的taskAffinity屬性值一致。

如果存在,就返回這個Task堆棧頂端的Activity回去。

在上面的 AndroidManifest.xml文件中,沒有配置MainActivity和SubActivity的taskAffinity屬性,于是它們的 taskAffinity屬性值就默認為父標簽application的taskAffinity屬性值,這里,標簽application的 taskAffinity也沒有配置,于是它們就默認為包名,即"shy.luo.task"。

由于在啟動SubActivity之 前,MainActivity已經(jīng)啟動,MainActivity啟動的時候,會在一個新的任務里面啟動,而這個新的任務的affinity屬性就等于它 的***個Activity的taskAffinity屬性值。

于是,這個函數(shù)會動回表示MainActivity的ActivityRecord回去.

回到前面的startActivityUncheckedLocked函數(shù)中,這里的taskTop就表示MainActivity,它不為 null,于是繼續(xù)往前執(zhí)行。由于條件r.launchMode == ActivityInfo.LAUNCH_SINGLE_TASK成立,于是執(zhí)行下面語句:

  1. [java] view plaincopyActivityRecord top = performClearTaskLocked( 
  2. kTop.task.taskId, r, launchFlags, true); 

函數(shù)performClearTaskLocked也是定義在frameworks/base/services/java/com/android/server/am/ActivityStack.java文件中:

  1. [java] view plaincopypublic class ActivityStack { 
  2.       ...... 
  3.       /** 
  4.       * Perform clear operation as requested by 
  5.       * {@link Intent#FLAG_ACTIVITY_CLEAR_TOP}: search from the top of the 
  6.       * stack to the given task, then look for 
  7.       * an instance of that activity in the stack and, if found, finish all 
  8.       * activities on top of it and return the instance. 
  9.       * 
  10.       * @param newR Description of the new activity being started. 
  11.       * @return Returns the old activity that should be continue to be used, 
  12.       * or null if none was found. 
  13.       */ 
  14.       private final ActivityRecord performClearTaskLocked(int taskId, 
  15.       ActivityRecord newR, int launchFlags, boolean doClear) { 
  16.       int i = mHistory.size(); 
  17.       // First find the requested task. 
  18.       while (i > 0) { 
  19.       i--; 
  20.       ActivityRecord r = (ActivityRecord)mHistory.get(i); 
  21.       if (r.task.taskId == taskId) { 
  22.       i++; 
  23.       break
  24.       } 
  25.       } 
  26.       // Now clear it. 
  27.       while (i > 0) { 
  28.       i--; 
  29.       ActivityRecord r = (ActivityRecord)mHistory.get(i); 
  30.       if (r.finishing) { 
  31.       continue
  32.       } 
  33.       if (r.task.taskId != taskId) { 
  34.       return null
  35.       } 
  36.       if (r.realActivity.equals(newR.realActivity)) { 
  37.       // Here it is! Now finish everything in front... 
  38.       ActivityRecord ret = r; 
  39.       if (doClear) { 
  40.       while (i < (mHistory.size()-1)) { 
  41.       i++; 
  42.       r = (ActivityRecord)mHistory.get(i); 
  43.       if (r.finishing) { 
  44.       continue
  45.       } 
  46.       if (finishActivityLocked(r, i, Activity.RESULT_CANCELED, 
  47.       null"clear")) { 
  48.       i--; 
  49.       } 
  50.       } 
  51.       } 
  52.       // Finally, if this is a normal launch mode (that is, not 
  53.       // expecting onNewIntent()), then we will finish the current 
  54.       // instance of the activity so a new fresh one can be started. 
  55.       if (ret.launchMode == ActivityInfo.LAUNCH_MULTIPLE 
  56.       && (launchFlags&Intent.FLAG_ACTIVITY_SINGLE_TOP) == 0) { 
  57.       if (!ret.finishing) { 
  58.       int index = indexOfTokenLocked(ret); 
  59.       if (index >= 0) { 
  60.       finishActivityLocked(ret, index, Activity.RESULT_CANCELED, 
  61.       null"clear"); 
  62.       } 
  63.       return null
  64.       } 
  65.       } 
  66.       return ret; 
  67.       } 
  68.       } 
  69.       return null
  70.       } 
  71.       ...... 
  72.       } 

 

責任編輯:閆佳明 來源: bbs.9ria
相關推薦

2014-05-27 14:33:37

AndroidActivitysingleTask

2014-05-27 14:59:24

AndroidActivitysingleTask

2014-05-27 15:09:13

AndroidActivitysingleTask

2014-05-27 14:09:52

AndroidActivitysingleTask

2014-05-27 14:12:49

AndroidActivitysingleTask

2014-05-27 14:16:08

AndroidActivitysingleTask

2014-05-27 14:28:25

AndroidActivitysingleTask

2014-05-27 14:44:26

AndroidActivitysingleTask

2014-05-27 15:07:07

AndroidActivitysingleTask

2014-05-27 15:11:20

AndroidActivitysingleTask

2014-05-27 15:17:46

AndroidActivitysingleTask

2010-02-06 15:26:11

Android應用程序

2009-08-14 17:08:00

Android應用程序

2013-01-17 15:51:42

Android開發(fā)應用程序組件

2010-12-13 11:40:17

Android應用程序

2012-12-25 09:52:22

Windows 8

2010-11-11 14:38:37

2012-04-25 22:56:10

Android

2010-03-03 16:45:46

Android應用程序

2011-05-24 16:09:57

Androi
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品永久免费 | 国产精品亚洲第一 | 亚洲国产精品一区二区第一页 | av av在线| 三级视频久久 | 亚洲综合在线视频 | 久久久久亚洲av毛片大全 | 国产乱码精品一区二区三区av | 日韩精品久久一区 | 正在播放一区二区 | 日本高清在线一区 | 日本午夜网站 | 亚洲精品68久久久一区 | 91精品国产色综合久久 | 一区二区三区在线观看视频 | 黄色片av | 亚洲协和影视 | 亚洲不卡在线观看 | 欧美一级欧美一级在线播放 | 精品国产一区二区国模嫣然 | 国产视频一视频二 | 亚洲精品视频在线播放 | 91精品国产综合久久婷婷香蕉 | 91精品一区 | 夜夜操天天操 | 色综合色综合色综合 | www.国产精| 精品视频一区在线 | 国产精品久久久久久久久久 | 久久久精品网站 | www.亚洲精品 | 精品国产一区探花在线观看 | 在线观看亚洲精品视频 | 6080亚洲精品一区二区 | 色视频在线观看 | 成人在线视频免费观看 | 久草在线在线精品观看 | 成人午夜电影在线观看 | 超碰在线免费公开 | 精品免费国产一区二区三区 | 久久亚洲国产精品 |