android开源任务管理,任务快照  |  Android 开源项目  |  Android Open Source Project

Android 8.0引入的任务快照整合了最近任务缩略图和已保存表面,提高应用启动速度和内存效率。当任务进入后台时,窗口管理器截图并保存,下次打开时无需等待绘制第一帧,实现平滑过渡。同时,系统UI绘制任务预览无需额外复制操作,节省资源并保持状态一致性。设备制造商可以选择停用此功能。
摘要由CSDN通过智能技术生成

任务快照是在 Android 8.0 中引入的基础架构,可将窗口管理器中的最近任务缩略图和已保存表面这两者的屏幕截图进行合并。最近任务缩略图会在“最近”视图中呈现任务的最后状态。

过去,当有 Activity 进入停止状态时,只要该 Activity 位于任务顶层,窗口管理器就不会销毁该 Activity 的表面。如果该 Activity 必须再次显示,窗口管理器便能够启动相应动画,而无需等待该 Activity 绘制完其第一帧,因为它能够使用这个已保存表面。

架构

通过任务快照,最近任务缩略图和已保存表面这两个概念合并在了一起。当有任务进入后台时,窗口管理器会将该任务的屏幕截图放入一个图形缓冲区中。只要任务顶层 Activity 的应用保留在内存中,该图形缓冲区就会保留在内存中。现在,当同一个 Activity 再次回到前面时,窗口管理器将会创建一个起始窗口 (TaskSnapshotSurface) 并附加图形缓冲区,而无需将任何内存复制到起始窗口的缓冲区队列。一旦该 Activity 绘制了其第一帧,任务快照起始窗口就会立即像常规启动画面一样平滑淡出。

系统还会将同一个图形缓冲区通过 Binder 发送到 SystemUI,以用于在“最近”视图中绘制任务的预览状态。由于这只是对缓冲区的引用,因此通过 Binder 发送它只需要多占用很少的资源。当该图形缓冲区到达 SystemUI 时,将会被封装到硬件位图中,然后被绘制到屏幕上,而无需将任何内存上传到图形内存。

优点

这种新架构有以下三个主要优点:

如果将任务快照用作起始窗口,快照和实际内容之间会有一个很好的交叉淡入淡出过程。

在 SystemUI 中绘制任务快照时,无需进行任何复制操作即可完成。以

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值