Android应用程序组件Activity的"singleTask"(9)

移动开发 Android
这个函数中作用无非就是找到ID等于参数taskId的任务,然后在这个任务中查找是否已经存在即将要启动的Activity的实例。

这个函数中作用无非就是找到ID等于参数taskId的任务,然后在这个任务中查找是否已经存在即将要启动的Activity的实例。

如果存在,就会把这 个Actvity实例上面直到任务堆栈顶端的Activity通过调用finishActivityLocked函数将它们结束掉。

在这个例子中,就是要 在属性值affinity等于"shy.luo.task"的任务中看看是否存在SubActivity类型的实例,如果有,就把它上面的 Activity都结束掉。

这里,属性值affinity等于"shy.luo.task"的任务只有一个MainActivity,而且它不是 SubActivity的实例,所以这个函数就返回null了。

回到前面的startActivityUncheckedLocked函数中,这里的变量top就为null了,于是执行下面的else语句:

  1. [java] view plaincopy if (top != null) { 
  2. ...... 
  3. else { 
  4. // A special case: we need to 
  5. // start the activity because it is not currently 
  6. // running, and the caller has asked to clear the 
  7. // current task to have this activity at the top. 
  8. addingToTask = true
  9. // Now pretend like this activity is being started 
  10. // by the top of its task, so it is put in the 
  11. // right place. 
  12. sourceRecord = taskTop; 

于是,变量addingToTask值就为true了,同时将变量sourceRecord的值设置为taskTop,即前面调用findTaskLocked函数的返回值,这里,它就是表示MainActivity了。

继续往下看,下面这个if语句:

  1. [java] view plaincopy if (r.packageName != null) { 
  2. // If the activity being launched is the same as the one currently 
  3. // at the top, then we need to check if it should only be launched 
  4. // once. 
  5. ActivityRecord top = topRunningNonDelayedActivityLocked(notTop); 
  6. if (top != null && r.resultTo == null) { 
  7. if (top.realActivity.equals(r.realActivity)) { 
  8. if (top.app != null && top.app.thread != null) { 
  9. ...... 
  10. else { 
  11. ...... 

 

责任编辑:闫佳明 来源: bbs.9ria
相关推荐

2014-05-27 14:44:26

AndroidActivitysingleTask

2014-05-27 14:12:49

AndroidActivitysingleTask

2014-05-27 14:16:08

AndroidActivitysingleTask

2014-05-27 14:09:52

AndroidActivitysingleTask

2014-05-27 15:17:46

AndroidActivitysingleTask

2014-05-27 14:28:25

AndroidActivitysingleTask

2014-05-27 15:11:20

AndroidActivitysingleTask

2014-05-27 15:09:13

AndroidActivitysingleTask

2014-05-27 15:04:15

AndroidActivitysingleTask

2014-05-27 14:33:37

AndroidActivitysingleTask

2014-05-27 14:59:24

AndroidActivitysingleTask

2010-02-06 15:26:11

Android应用程序

2009-08-14 17:08:00

Android应用程序

2013-01-17 15:51:42

Android开发应用程序组件

2014-05-22 15:41:59

Android消息处理机制Looper

2022-09-27 15:16:42

开发Android应用程序

2010-11-11 14:38:37

2012-04-25 22:56:10

Android

2017-01-15 15:02:42

JavaScript移动应用开发框架

2011-05-24 16:09:57

Androi
点赞
收藏

51CTO技术栈公众号