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. setupViewsRecentsView.onAttachedToWindow.updateTaskStackListenerStatereloadIfNeededapplyLoadPlan在applyLoadPlan()内部,主要执行了四项工作:unloadVisibleTaskData():将现有visible的task数据进行置空;根据task数量(首次进入)进行addView,TaskView通过mTaskViewPool的getView()进行获取,最后添加clearAllButton;对添加完的TaskView进行bind()操作,将对应的task存在TaskView内部,类似setTag()功能;执行resetTaskVisuals()来刷新加载数据;loadVisibleTaskDataTaskView.onTaskListVisibilityChangedSnapshotView.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.getTaskKeysloadTasksInBackgroundActivityManagerWrapper.getInstance().getRecentTasksActivityTaskManager.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.mzph.cn/bicheng/57246.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何克隆Git仓库的子目录:稀疏检出

一、环境 Git 2.34.1 二、前言 一般来说,我们在克隆git仓库的时候,都是一整个仓库都克隆出来的。如果假设现在有一个很大的仓库,仓库里有多个子项目,而我们只想克隆其中一个子项目的时候,应该怎么做呢? …

【Java后端】之 ThreadLocal 详解

想象一下,你有一个工具箱,里面放着各种工具。在多人共用这个工具箱的时候,很容易出现混乱,比如有人拿走了你的锤子,或者你找不到合适的螺丝刀。为了避免这种情况,最好的办法就是每个人都有自己独立的工具箱…

初识适配器模式

适配器模式 引入 生活中的例子:当我们使用手机充电时,充电器起到了转换器的作用,它将家用的220伏特电压转换成适合手机充电的5伏特电压。 适配器模式的三种类型 命名原则:适配器的命名应基于资源如何传递给适配器来进行。 类适配…

第14篇:下一代网络与新兴技术

目录 引言 14.1 下一代网络(NGN)的定义与特点 14.2 IPv6协议的改进与未来应用 14.3 软件定义网络(SDN) 14.4 网络功能虚拟化(NFV) 14.5 量子通信网络 14.6 软件定义广域网(SD-WAN&#x…

xlsx xlsx-style-vite 实现前端根据element 表格导出excel且定制化样式 背景 列宽等

前言 先看下最终效果图吧,需要的可以参考我的实现方式 这是最终导出的表格文件 类似这种的,特定单元格需要额外标注,表头也有月份然后细分的,表格组件是这样的 注意 别使用xlsx-style 这个库,太多问题了,…

【C语言刷力扣】1768.交替合并字符串

题目: 解题思路: 将 word1 和 word2 元素依次添加至 ans 的后面。 时间复杂度: , n是word1的长度 m是word2的长度 空间复杂度: char* mergeAlternately(char* word1, char* word2) {int len1 strlen(word1);in…

【Linux】top命令查看CPU、内存使用率、解释

1. top 命令 top 是最常用的实时监控工具之一,可以显示 CPU 的总利用率以及各个进程的 CPU 使用情况。在Linux命令行直接输入top即可查看动态原始数据 top 在 top 命令的输出中,最上面的一行会显示 CPU 的使用情况: us(User&a…

图片怎么转文字?11种好用的方法!

如何快速将图片的文字提取出来,可以大量节省手打的时间,无论是截图,或者批量提取照片文字,都经常需要这个操作! 作为一名社畜,俺也经常用到各种图片转文字工具,今天通过测评12个主流的图片转文…

面对AI算力需求激增,如何守护数据中心机房安全?

随着人工智能(AI)技术飞速发展,AI算力需求呈现爆发式增长,导致对数据设备电力的需求指数级攀升。这给数据中心带来前所未有的挑战和机遇,从提供稳定的电力供应、优化高密度的部署,到数据安全的隐私保护&…

OpenVLA-首个开源视觉语言动作大模型

官网:https://openvla.github.io/ 现在大模型已经卷到了机器人领域。 在视觉语言模型(VLM)的基础上, 加入机器人的动作(Action) 这一模态, 视觉语言动作大模型(VLA)是目前大模型应用…

2024新手攻略:项目管理工具+PMP备考经验不容错过!

(一)热门工具大盘点 禅道是一款专注于软件开发项目管理的工具。它涵盖了项目管理的各个环节,包括需求管理、任务分配、缺陷跟踪等。禅道的优势在于其对软件开发流程的深入理解和支持,能够帮助开发团队更好地管理项目进度和质量。…

如何应对 Android 面试官 -> ANR 如何优化?线上 ANR 如何监控?

前言 本章主要围绕 ANR 如何监控以及优化; 基本概念 ANR(Android Not Responding) 是指应用程序未响应,Android 系统对于一些事件需要在一定的时间范围内完成,如果超过预订时间未能得到有效响应或者响应时间过长,都会造成 ANR。 …

91 VRRP负载局衡+主备切块 V2

实操四 负载均衡主备 VRRP(虚拟路由冗余协议)是一种网络协议,用于提高网络的可用性和冗余性。VRRP可以将多个路由设备组成一个虚拟路由器,当主路由设备故障时,自动切换到备用路由设备,从而实现高可用性。 …

Mamba学习笔记(2)—序列数据处理基础

文章目录 (1) RNN(Recurrent Neural Networks)基本原理代码定义 (2) SLTM (Long Short-Term Memory)基本原理代码定义 (3) GRU (Gated Recurrent Unit)基本原理代码定义 (4) Transformer(☆☆☆Attention Is All You Need☆☆☆)0…

nginx解决非人类使用http打开的443,解决网安漏扫时误扫443端口带来的问题

一、问题描述 正常访问https的站点时,使用网址https://www.baidu.com,但会有一种错误的访问请求http://www.baidu.com:443,一般都是非人类所为,如漏洞扫描工具,那么请求以后带来的后果是个错误页面 400 Bad Request T…

如何选择合适业务协作平台?—— 板栗看板给你答案

在当今快速发展的商业环境中,团队协作和项目管理变得越来越重要。业务协作平台作为一种工具,可以帮助团队成员进行有效的沟通、任务分配和进度跟踪。这些平台通常具备项目管理、文档共享、实时通讯等功能,以提高团队的工作效率和协作能力。 一…

AttributeError: ‘function‘ object has no attribute ‘decode‘

h5py版本过高&#xff0c;降低版本即可。 1.卸载h5py pip uninstall h5py 卸载后&#xff0c;查看h5py版本&#xff0c;显示这个代表卸载成功。 import h5py print(h5py.__version__) 2. 安装低版本的h5py<3.0.0 目前的版本有&#xff1a; 2.2.1, 2.3.0b1, 2.3.0, 2.3.1,…

如何看ip属于什么地址

在数字化时代&#xff0c;IP地址作为互联网通信的基石&#xff0c;扮演着至关重要的角色。无论是网络管理、安全防护&#xff0c;还是日常的网络访问&#xff0c;理解IP地址的性质和分类都是必不可少的技能。本文将深入探讨如何判断一个IP地址属于哪一类地址&#xff0c;并详细…

阿里云验证码短信发送服务搭建(flask)

参考&#xff1a;https://next.api.aliyun.com/api-tools/sdk/Dysmsapi?version2017-05-25&languagejava-async-tea&tabprimer-doc 我们需要思考验证服务一些要求&#xff1a; 1.验证码只能被验证一次&#xff0c;所以需要状态字段 2.验证码有失效时间&#xff0c;超…

C++STL--------list

文章目录 一、list链表的使用1、迭代器2、头插、头删3、insert任意位置插入4、erase任意位置删除5、push_back 和 pop_back()6、emplace_back尾插7、swap交换链表8、reverse逆置9、merge归并10、unique去重11、remove删除指定的值12、splice把一个链表的结点转移个另一个链表13…