自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

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

因此,notTop為null。

接下來的這個(gè)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,它表示即將在啟動(dòng)的Activity,在這個(gè)例子中,即為SubActivity,因此,這里的 r.launchMode等于ActivityInfo.LAUNCH_SINGLE_TASK,于是,無條件將launchFlags的 Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP位置為1,表示這個(gè)SubActivity要在新的任務(wù)中啟動(dòng),但是別急,還 要看看其它條件是否滿足,如果條件都滿足,才可以在新的任務(wù)中啟動(dòng)這個(gè)SubActivity。

接下將addingToTask變量初始化為false,這個(gè)變量也將決定是否要將SubActivity在新的任務(wù)中啟動(dòng),從名字我們就可以看出, 默認(rèn)不增加到原有的任務(wù)中啟動(dòng),即要在新的任務(wù)中啟動(dòng)。這里的r.launchMode == ActivityInfo.LAUNCH_SINGLE_TASK條成立,條件r.resultTo == null也成立,它表這個(gè)Activity不需要將結(jié)果返回給啟動(dòng)它的Activity。于是會(huì)進(jìn)入接下來的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ù),這個(gè)函數(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 15:04:15

AndroidActivitysingleTask

2014-05-27 15:09:13

AndroidActivitysingleTask

2014-05-27 14:33:37

AndroidActivitysingleTask

2014-05-27 14:16:08

AndroidActivitysingleTask

2014-05-27 15:07:07

AndroidActivitysingleTask

2014-05-27 15:11:20

AndroidActivitysingleTask

2014-05-27 15:17:46

AndroidActivitysingleTask

2014-05-27 14:28:25

AndroidActivitysingleTask

2014-05-27 14:44:26

AndroidActivitysingleTask

2014-05-27 14:12:49

AndroidActivitysingleTask

2014-05-27 14:09:52

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)用程序組件

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)用

2010-11-11 14:38:37

點(diǎn)贊
收藏

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