最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

上滑動導(dǎo)航欄手勢桌面最近任務(wù)可見解密-千里馬手把手帶你搞定framework車載車機系統(tǒng)

2023-09-04 15:07 作者:千里馬學(xué)框架  | 我要投稿

建議先看另一篇blog: https://blog.csdn.net/learnframework/article/details/123032419[1]

在這里插入圖片描述

系統(tǒng)如何讓桌面執(zhí)行對應(yīng)的onStart方法呢?

具體的堆棧顯示如下:

makeActiveIfNeeded:5788,?ActivityRecord?(com.android.server.wm)
makeVisibleIfNeeded:5697,?ActivityRecord?(com.android.server.wm)
setActivityVisibilityState:210,?EnsureActivitiesVisibleHelper?(com.android.server.wm)
process:143,?EnsureActivitiesVisibleHelper?(com.android.server.wm)
updateActivityVisibilities:1117,?TaskFragment?(com.android.server.wm)
lambda$ensureActivitiesVisible$18:4857,?Task?(com.android.server.wm)
accept:-1,?Task$$ExternalSyntheticLambda23?(com.android.server.wm)
forAllLeafTasks:3174,?Task?(com.android.server.wm)
forAllLeafTasks:3162,?Task?(com.android.server.wm)
ensureActivitiesVisible:4856,?Task?(com.android.server.wm)
lambda$ensureActivitiesVisible$45:6293,?DisplayContent?(com.android.server.wm)
accept:-1,?DisplayContent$$ExternalSyntheticLambda38?(com.android.server.wm)
forAllRootTasks:3186,?Task?(com.android.server.wm)
forAllRootTasks:2014,?WindowContainer?(com.android.server.wm)
forAllRootTasks:2014,?WindowContainer?(com.android.server.wm)
forAllRootTasks:2014,?WindowContainer?(com.android.server.wm)
forAllRootTasks:2014,?WindowContainer?(com.android.server.wm)
forAllRootTasks:2014,?WindowContainer?(com.android.server.wm)
forAllRootTasks:2014,?WindowContainer?(com.android.server.wm)
forAllRootTasks:2007,?WindowContainer?(com.android.server.wm)
ensureActivitiesVisible:6292,?DisplayContent?(com.android.server.wm)
ensureActivitiesVisible:1864,?RootWindowContainer?(com.android.server.wm)
ensureActivitiesVisible:1845,?RootWindowContainer?(com.android.server.wm)
startRecentsActivity:260,?RecentsAnimation?(com.android.server.wm)
startRecentsActivity:1729,?ActivityTaskManagerService?(com.android.server.wm)
onTransact:1171,?IActivityTaskManager$Stub?(android.app)
onTransact:5183,?ActivityTaskManagerService?(com.android.server.wm)
execTransactInternal:1280,?Binder?(android.os)
execTransact:1244,?Binder?(android.os)
導(dǎo)致onStart調(diào)用關(guān)鍵就在于這里的startRecentsActivity會觸發(fā)ensureActivitiesVisible方法,正常的ensureActivitiesVisible只是來保證當(dāng)前一些ActivityRecord的屬性值或者config變化了,靠調(diào)用ensureActivitiesVisible來保證Activity的visibility可以顯示正常

在這里插入圖片描述

這里的
targetActivity.mLaunchTaskBehind = true; 就是最為關(guān)鍵的點,它代表者可以在其他activity的后面可以顯示。

疑問為啥只是到了onStart而不走到onResume:

根據(jù)上面的堆棧來看這個核心方法makeActiveIfNeeded

boolean?makeActiveIfNeeded(ActivityRecord?activeActivity)?{
//判斷Activity是應(yīng)該被Resume
????????if?(shouldResumeActivity(activeActivity))?{
????????????return?getRootTask().resumeTopActivityUncheckedLocked(activeActivity?/*?prev?*/,
????????????????????null?/*?options?*/);
????????}?else?if?(shouldPauseActivity(activeActivity))?{
//判斷Activity是應(yīng)該被Pasue
????????
????????????setState(PAUSING,?"makeActiveIfNeeded");
????????????mAtmService.getLifecycleManager().scheduleTransaction(app.getThread(),?token,
????????????????????????PauseActivityItem.obtain(finishing,?false?/*?userLeaving?*/,
????????????????????????????????configChangeFlags,?false?/*?dontReport?*/));

????????}?else?if?(shouldStartActivity())?{
?????????
????????????setState(STARTED,?"makeActiveIfNeeded");

????????????try?{
????????????????mAtmService.getLifecycleManager().scheduleTransaction(app.getThread(),?token,
????????????????????????StartActivityItem.obtain(takeOptions()));
????????????}?
????????????mTaskSupervisor.mStoppingActivities.remove(this);
????????}
????????return?false;
????}

那么這里其實最主要我們關(guān)注是shouldResumeActivity(activeActivity)方法為啥沒有返回true,而返回來false,導(dǎo)致進入到了shouldStartActivity方法 看看shouldResumeActivity方法:

??@VisibleForTesting
????boolean?shouldResumeActivity(ActivityRecord?activeActivity)?
{
????//主要調(diào)用到了shouldBeResumed
????????return?shouldBeResumed(activeActivity)?&&?!isState(RESUMED);
????}
????private?boolean?shouldBeResumed(ActivityRecord?activeActivity)?{
????//shouldBeResumed方法又有若干條件,任何條件不滿足都是不可以的,先看看第一個條件shouldMakeActive
????????return?shouldMakeActive(activeActivity)?&&?isFocusable()
????????????????&&?getTaskFragment().getVisibility(activeActivity)
????????????????????????==?TASK_FRAGMENT_VISIBILITY_VISIBLE
????????????????&&?canResumeByCompat();
????}
????
??boolean?shouldMakeActive(ActivityRecord?activeActivity)?{
????????if?(!isState(STARTED,?RESUMED,?PAUSED,?STOPPED,?STOPPING)
????????????????//?TODO?(b/185876784)?Check?could?we?remove?the?check?condition
????????????????//??mTranslucentActivityWaiting?!=?null?here
????????????????||?getRootTask().mTranslucentActivityWaiting?!=?null)?{
????????????return?false;
????????}

????????if?(this?==?activeActivity)?{
????????????return?false;
????????}

????????if?(!mTaskSupervisor.readyToResume())?{
????????????//?Making?active?is?currently?deferred?(e.g.?because?an?activity?launch?is?in?progress).
????????????return?false;
????????}
//核心就是這個地方,前面設(shè)置了mLaunchTaskBehind為true,所以這里就返回false了
????????if?(this.mLaunchTaskBehind)?{
????????????//?This?activity?is?being?launched?from?behind,?which?means?that?it's?not?intended?to?be
????????????//?presented?to?user?right?now,?even?if?it's?set?to?be?visible.
????????????return?false;
????????}
????????return?getTaskFragment().topRunningActivity()?==?this;
????}

引用鏈接

[1] 建議先看另一篇blog: https://blog.csdn.net/learnframework/article/details/123032419: https://blog.csdn.net/learnframework/article/details/123032419

更多干貨framework車載車機手機系統(tǒng)開發(fā)干貨課程請加千里馬本人微信


上滑動導(dǎo)航欄手勢桌面最近任務(wù)可見解密-千里馬手把手帶你搞定framework車載車機系統(tǒng)的評論 (共 條)

分享到微博請遵守國家法律
莱西市| 香格里拉县| 余干县| 连城县| 清流县| 慈利县| 义马市| 印江| 噶尔县| 洞头县| 湄潭县| 周口市| 礼泉县| 合作市| 无为县| 郁南县| 依兰县| 富阳市| 温州市| 丰原市| 泰和县| 武义县| 静乐县| 老河口市| 龙泉市| 丹凤县| 兴义市| 新巴尔虎左旗| 枞阳县| 旺苍县| 荔浦县| 上杭县| 和政县| 建德市| 西城区| 金华市| 兴隆县| 凤翔县| 雷山县| 瑞安市| 麻栗坡县|