当前位置: 首页 > article >正文

Android10 recent键相关总结

目录

初始化流程

点击Recent键流程

RecentsActivity 显示流程

RecentsModel 获取数据管理类

RecentsActivity 布局

已处于Recent界面时

点击recent 空白区域

点击返回键

recent组件配置


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

初始化流程

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

TouchInteractionService.onOverviewToggle

OverviewCommandHelper.onOverviewToggle

RecentsActivityCommand

registerAndStartActivity

OverviewComponentObserver.getOverviewIntent

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

引用:https://longzhiye.blog.csdn.net/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 优先


http://www.kler.cn/news/350703.html

相关文章:

  • 艾默生Ovation伺服驱动器电子模块(1C31199G03)
  • 海港[NOIP2016]
  • 当有违法数据时,浏览器不解析,返回了undefined,导致数据不解析
  • Angular 保姆级别教程高阶应用 - RxJs
  • MySQL~表的操作(创建表,查看表,修改表,删除表)
  • C语言_通讯录_进阶
  • Spring Boot框架下大创项目流程自动化
  • 【论文阅读】03-Diffusion Models and Representation Learning: A Survey
  • C++ | Leetcode C++题解之第486题预测赢家
  • Android activity 启动流程
  • 指针——函数指针数组
  • 计算机网络 2024 11 10
  • windows上的git bash中会将~设为哪个目录?
  • vector的深入剖析与底层逻辑
  • css-背景图片全屏显示适配不同尺寸覆盖
  • 股票分析软件设计
  • 003_django基于Django高校岗位招聘平台与数据可视化分析设计和实现2024_414pr4jc
  • 大数据-174 Elasticsearch Query DSL - 全文检索 full-text query 匹配、短语、多字段 详细操作
  • 法规标准-懂车帝智能化实测标准(2024版)
  • 嵌入式:Keil的Code、RW、RO、ZI段的解析
  • 解决 Qt 中提升控件后样式表无法正确应用的问题
  • 导致动态代理无法使用的原因有哪些?
  • 牛市,路漫漫其修远兮
  • SSO 单点登录详解
  • 最短路问题之dijikstra算法
  • 【进阶OpenCV】 (16)-- 人脸识别 -- FisherFaces算法