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

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

移動開發 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要在新的任務中啟動,但是別急,還 要看看其它條件是否滿足,如果條件都滿足,才可以在新的任務中啟動這個SubActivity。

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

 

  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成立,于是執行findTaskLocked函數,這個函數也是定義在 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.       } 

 

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

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應用程序

2009-08-14 17:08:00

Android應用程序

2013-01-17 15:51:42

Android開發應用程序組件

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

2010-01-25 13:29:53

Android本地應用

2022-09-27 15:16:42

開發Android應用程序
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: caoporn国产精品免费公开 | 综合久久综合久久 | 欧美精品区 | 欧美精品 在线观看 | 91久久精品一区 | 91伦理片 | 日韩免费一区二区 | 在线观看亚洲专区 | 一个色在线| 国产精品99久久久久久宅男 | 久色网 | 蜜桃精品噜噜噜成人av | 久久网日本 | 婷婷在线视频 | 中文字幕av网 | 成人国产精品久久 | 午夜噜噜噜| 午夜寂寞影院在线观看 | 伊人免费视频二 | 久久伦理中文字幕 | av看片网| 亚洲www啪成人一区二区麻豆 | 日韩中文字幕一区二区 | 欧美激情精品久久久久久免费 | 日韩av在线一区 | 日日干日日射 | 亚洲福利av | a在线观看 | 亚洲精品9999 | 国产1区 | 91在线视频在线观看 | 欧美成人激情 | 欧美日韩在线免费观看 | 亚洲精品一区二区三区丝袜 | 精品欧美一区二区精品久久 | 亚洲欧美日韩在线 | 久久成人人人人精品欧 | 亚州成人| 一级欧美黄色片 | 久久国产精品久久国产精品 | 亚洲高清在线播放 |