wordpress網(wǎng)站例昆明網(wǎng)絡營銷
目錄
初始化流程
點擊Recent鍵流程
RecentsActivity 顯示流程
RecentsModel 獲取數(shù)據(jù)管理類
RecentsActivity 布局
已處于Recent界面時
點擊recent 空白區(qū)域
點擊返回鍵
recent組件配置
Android10 Recent 功能由 System UI,Launcher共同實現(xiàn)。
初始化流程
Android10.0 最近任務Recents功能分析_android 最近任務-CSDN博客
TouchInteractionService.onOverviewToggle
OverviewCommandHelper.onOverviewToggle
RecentsActivityCommand
registerAndStartActivity
OverviewComponentObserver.getOverviewIntent
mListener.registerAndStartActivity(mOverviewComponentObserver.getOverviewIntent(), 最終啟動邏輯。
(引用別人的圖)
點擊Recent鍵流程
Recents(SystemUI 中).toggleRecentApps
TouchInteractionService(Launcher) . onOverviewToggle
OverviewCommandHelper .onOverviewToggle
RecentsActivityCommand
registerAndStartActivity
去啟動配置的RecentsActivity
RecentsActivity 顯示流程
RecentsActivity. setupViewsRecentsView.onAttachedToWindow.updateTaskStackListenerStatereloadIfNeededapplyLoadPlan在applyLoadPlan()內(nèi)部,主要執(zhí)行了四項工作:unloadVisibleTaskData():將現(xiàn)有visible的task數(shù)據(jù)進行置空;根據(jù)task數(shù)量(首次進入)進行addView,TaskView通過mTaskViewPool的getView()進行獲取,最后添加clearAllButton;對添加完的TaskView進行bind()操作,將對應的task存在TaskView內(nèi)部,類似setTag()功能;執(zhí)行resetTaskVisuals()來刷新加載數(shù)據(jù);loadVisibleTaskDataTaskView.onTaskListVisibilityChangedSnapshotView.setThumbnail 加載縮略圖setIcon 加載 icon
RecentsModel 獲取數(shù)據(jù)管理類
RecentsModel繼承了TaskStackChangeListener,在構造方法內(nèi)部初始化了RecentsTaskList、TaskIconCache和TaskThumbnailCache實例,注冊了registerTaskStackListener回調(diào);分別來獲取最近任務列表、獲取Task對應的Icon和,
- RecentsTaskList:獲取最近任務列表;
- TaskIconCache:獲取Task對應的icon,并進行緩存;
- TaskThumbnailCache:獲取Task對應的thumbnailData,并進行緩存;
與Android8.1不同的是,8.1上在獲取最近任務列表后會獲取任務對應的Thumbnail和Icon,最終封裝成Task,在顯示時直接通過Task.thumbnail和Task.icon就可以直接顯示;11上會通過TaskIconCache和TaskThumbnailCache進行分別存儲管理,首次顯示或有新的任務,需要通過TaskIconCache和TaskThumbnailCache執(zhí)行對應的request去獲取并進行cache存儲;
onTaskStackChangedBackground (數(shù)據(jù)更新)TaskList.getTaskKeysloadTasksInBackgroundActivityManagerWrapper.getInstance().getRecentTasksActivityTaskManager.getRecentTasks
RecentsActivity 布局
R.layout.fallback_recents_activity
RecentsRootView
RecentsView 最近應用核心view
==========
已處于Recent界面時
若已進入recent界面:
點擊recent 空白區(qū)域
(RecentsActivity 做最近Activity時)
RecentsView.onTouchEvent
FallbackRecentsView.startHome (Android13)
BaseRecentsActivity.startHome
點擊返回鍵
BaseRecentsActivity.onBackPressed --- startHome
recent組件配置
frameworks/base/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java
中通過 context.getString(com.android.internal.R.string.config_recentsComponentName)?
判斷加載啥RecentActivity.
配置的是:com.android.launcher3/com.android.quickstep.RecentsActivity
PS:
packages/apps/Launcher3/quickstep/recents_ui_overrides 優(yōu)先