日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Android應(yīng)用程序組件Activity的"singleTask"(8)

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

創(chuàng)新互聯(lián)建站憑借專業(yè)的設(shè)計團(tuán)隊扎實的技術(shù)支持、優(yōu)質(zhì)高效的服務(wù)意識和豐厚的資源優(yōu)勢,提供專業(yè)的網(wǎng)站策劃、網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)站優(yōu)化、軟件開發(fā)、網(wǎng)站改版等服務(wù),在成都10余年的網(wǎng)站建設(shè)設(shè)計經(jīng)驗,為成都上千中小型企業(yè)策劃設(shè)計了網(wǎng)站。

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

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

由于在啟動SubActivity之 前,MainActivity已經(jīng)啟動,MainActivity啟動的時候,會在一個新的任務(wù)里面啟動,而這個新的任務(wù)的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.       }

分享文章:Android應(yīng)用程序組件Activity的"singleTask"(8)
文章出自:http://www.5511xx.com/article/ccciejs.html