Android10 recent键相关总结

目录

初始化流程

点击Recent键流程

RecentsActivity 显示流程

RecentsModel 获取数据管理类

RecentsActivity 布局

已处于Recent界面时

点击recent 空白区域

点击返回键

recent组件配置


Android10 Recent 功能由 System UI,Launcher共同实现。

初始化流程

Android10.0 最近任务Recents功能分析_android 最近任务-优快云博客

TouchInteractionService.onOverviewToggle

OverviewCommandHelper.onOverviewToggle

RecentsActivityCommand

registerAndStartActivity

OverviewComponentObserver.getOverviewIntent

mListener.registerAndStartActivity(mOverviewComponentObserver.getOverviewIntent(), 最终启动逻辑。

引用:https://longzhiye.blog.youkuaiyun.com/article/details/134262164

(引用别人的图)

点击Recent键流程

Recents(SystemUI 中).toggleRecentApps

TouchInteractionService(Launcher) . onOverviewToggle

OverviewCommandHelper .onOverviewToggle

RecentsActivityCommand

registerAndStartActivity

去启动配置的RecentsActivity

RecentsActivity 显示流程

RecentsActivity. setupViews
	RecentsView.onAttachedToWindow.
		updateTaskStackListenerState
			reloadIfNeeded
				applyLoadPlan
					在applyLoadPlan()内部,主要执行了四项工作:
					unloadVisibleTaskData():将现有visible的task数据进行置空;
					根据task数量(首次进入)进行addView,TaskView通过mTaskViewPool的getView()进行获取,最后添加clearAllButton;
					对添加完的TaskView进行bind()操作,将对应的task存在TaskView内部,类似setTag()功能;
					执行resetTaskVisuals()来刷新加载数据;
						loadVisibleTaskData
							TaskView.onTaskListVisibilityChanged
								SnapshotView.setThumbnail  加载缩略图
								setIcon 加载 icon

RecentsModel 获取数据管理类

RecentsModel继承了TaskStackChangeListener,在构造方法内部初始化了RecentsTaskList、TaskIconCache和TaskThumbnailCache实例,注册了registerTaskStackListener回调;分别来获取最近任务列表、获取Task对应的Icon和,

  1. RecentsTaskList:获取最近任务列表;
  2. TaskIconCache:获取Task对应的icon,并进行缓存;
  3. TaskThumbnailCache:获取Task对应的thumbnailData,并进行缓存;

与Android8.1不同的是,8.1上在获取最近任务列表后会获取任务对应的Thumbnail和Icon,最终封装成Task,在显示时直接通过Task.thumbnail和Task.icon就可以直接显示;11上会通过TaskIconCache和TaskThumbnailCache进行分别存储管理,首次显示或有新的任务,需要通过TaskIconCache和TaskThumbnailCache执行对应的request去获取并进行cache存储;

onTaskStackChangedBackground (数据更新)
	TaskList.getTaskKeys
		loadTasksInBackground
			ActivityManagerWrapper.getInstance().getRecentTasks
				ActivityTaskManager.getRecentTasks

RecentsActivity 布局

R.layout.fallback_recents_activity

RecentsRootView

RecentsView 最近应用核心view

==========

已处于Recent界面时

若已进入recent界面:

点击recent 空白区域

(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 优先

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值