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

Android應(yīng)用程序組件Activity的"singleTask"(7)

移動開發(fā) Android
首先是獲得用來啟動Activity的Intent的Flags,并且保存在launchFlags變量中。這里,launcFlags的Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP位沒有置位。

首先是獲得用來啟動Activity的Intent的Flags,并且保存在launchFlags變量中。

這里,launcFlags的Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP位沒有置位。

因此,notTop為null。

接下來的這個if語句:

  1. [java] view plaincopy if (sourceRecord == null) { 
  2. ...... 
  3. else if (sourceRecord.launchMode == ActivityInfo.LAUNCH_SINGLE_INSTANCE) 
  4.  
  5. ...... 
  6. else if (r.launchMode == ActivityInfo.LAUNCH_SINGLE_INSTANCE 
  7. || r.launchMode == ActivityInfo.LAUNCH_SINGLE_TASK) { 
  8. // The activity being started is a single instance... it always 
  9. // gets launched into its own task. 
  10. launchFlags |= Intent.FLAG_ACTIVITY_NEW_TASK; 

這里變量r的類型為ActivityRecord,它表示即將在啟動的Activity,在這個例子中,即為SubActivity,因此,這里的 r.launchMode等于ActivityInfo.LAUNCH_SINGLE_TASK,于是,無條件將launchFlags的 Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP位置為1,表示這個SubActivity要在新的任務(wù)中啟動,但是別急,還 要看看其它條件是否滿足,如果條件都滿足,才可以在新的任務(wù)中啟動這個SubActivity。

接下將addingToTask變量初始化為false,這個變量也將決定是否要將SubActivity在新的任務(wù)中啟動,從名字我們就可以看出, 默認(rèn)不增加到原有的任務(wù)中啟動,即要在新的任務(wù)中啟動。這里的r.launchMode == ActivityInfo.LAUNCH_SINGLE_TASK條成立,條件r.resultTo == null也成立,它表這個Activity不需要將結(jié)果返回給啟動它的Activity。于是會進入接下來的if語句中,執(zhí)行:

 

  1. [java] view plaincopy ActivityRecord taskTop = r.launchMode != ActivityInfo.LAUNCH_SINGLE_INSTANCE 
  2.  
  3. ? findTaskLocked(intent, r.info) 
  4.  
  5. : findActivityLocked(intent, r.info) 

 

這里的條件r.launchMode != ActivityInfo.LAUNCH_SINGLE_INSTANCE成立,于是執(zhí)行findTaskLocked函數(shù),這個函數(shù)也是定義在 frameworks/base/services/java/com/android/server/am/ActivityStack.java文件中:

  1. [java] view plaincopypublic class ActivityStack { 
  2.       ...... 
  3.       /** 
  4.       * Returns the top activity in any existing task matching the given 
  5.       * Intent. Returns null if no such task is found. 
  6.       */ 
  7.       private ActivityRecord findTaskLocked(Intent intent, ActivityInfo info) 
  8.     { 
  9.       ComponentName cls = intent.getComponent(); 
  10.       if (info.targetActivity != null) { 
  11.       cls = new ComponentName(info.packageName, info.targetActivity); 
  12.       } 
  13.       TaskRecord cp = null
  14.       final int N = mHistory.size(); 
  15.       for (int i=(N-1); i>=0; i--) { 
  16.       ActivityRecord r = (ActivityRecord)mHistory.get(i); 
  17.       if (!r.finishing && r.task != cp 
  18.       && r.launchMode != ActivityInfo.LAUNCH_SINGLE_INSTANCE) { 
  19.       cp = r.task; 
  20.       //Slog.i(TAG, "Comparing existing cls=" + 
  21.     r.task.intent.getComponent().flattenToShortString() 
  22.       // + "/aff=" + r.task.affinity + " to new cls=" 
  23.       // + intent.getComponent().flattenToShortString() + "/aff=" + 
  24.     taskAffinity); 
  25.       if (r.task.affinity != null) { 
  26.       if (r.task.affinity.equals(info.taskAffinity)) { 
  27.       //Slog.i(TAG, "Found matching affinity!"); 
  28.       return r; 
  29.       } 
  30.       } else if (r.task.intent != null 
  31.       && r.task.intent.getComponent().equals(cls)) { 
  32.       //Slog.i(TAG, "Found matching class!"); 
  33.       //dump(); 
  34.       //Slog.i(TAG, "For Intent " + intent + " bringing to top: " + 
  35.     r.intent); 
  36.       return r; 
  37.       } else if (r.task.affinityIntent != null 
  38.       && r.task.affinityIntent.getComponent().equals(cls)) { 
  39.       //Slog.i(TAG, "Found matching class!"); 
  40.       //dump(); 
  41.       //Slog.i(TAG, "For Intent " + intent + " bringing to top: " + 
  42.     r.intent); 
  43.       return r; 
  44.       } 
  45.       } 
  46.       } 
  47.       return null
  48.       } 
  49.       ...... 
  50.       } 

 

責(zé)任編輯:閆佳明 來源: bbs.9ria
相關(guān)推薦

2014-05-27 14:33:37

AndroidActivitysingleTask

2014-05-27 15:04:15

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應(yīng)用程序

2009-08-14 17:08:00

Android應(yīng)用程序

2013-01-17 15:51:42

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

2010-11-11 14:38:37

2012-04-25 22:56:10

Android

2010-03-03 16:45:46

Android應(yīng)用程序

2011-05-24 16:09:57

Androi

2022-09-27 15:16:42

開發(fā)Android應(yīng)用程序

2010-01-25 13:29:53

Android本地應(yīng)用
點贊
收藏

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

主站蜘蛛池模板: www.欧美视频 | 国产亚洲欧美日韩精品一区二区三区 | 中文av在线播放 | 日韩在线免费视频 | 一级毛片在线播放 | 久久久蜜桃一区二区人 | 日韩精品在线一区二区 | 午夜精品久久久 | 综合婷婷 | 免费一级毛片 | 国产亚洲欧美在线 | 欧美一级做性受免费大片免费 | www视频在线观看 | 日本精品999 | 神马影院一区二区三区 | 伊人狠狠操 | 午夜精品一区二区三区在线播放 | 一区二区在线不卡 | 日韩美女爱爱 | 黄色一级大片在线免费看产 | 国产精品一区二区三区在线 | 做a视频| 久久国内精品 | 国产 欧美 日韩 一区 | 成人精品一区 | 在线视频亚洲 | 麻豆国产一区二区三区四区 | 国产亚洲精品久久久久动 | 亚洲精品一二三区 | 亚洲国产成人av好男人在线观看 | 青青草社区 | 亚洲高清av| 中文字幕一区二区在线观看 | 久久国产精品一区二区三区 | 精品中文字幕在线观看 | 久久网一区二区三区 | 日本天堂视频 | 一区二区精品在线 | 国产一区二区精品在线 | 红桃视频一区二区三区免费 | 久久极品 |