android分屏模式_Android分屏显示总结

本文详细介绍了Android分屏模式的基础原理,包括ActivityRecord、TaskRecord和ActivityStack的关系,为何定义多个ActivityStack,以及Activity的绘制过程。还探讨了原生分屏显示功能的工作流程,包括Recents中的任务管理和分屏操作步骤。此外,提到了EventBus在分屏中的作用,以及SurfaceFlinger的生产者消费者模型。最后,文章提供了开机自动分屏的简单实现思路。
摘要由CSDN通过智能技术生成

1. 基础原理

1.1 ActivityRecord、TaskRecord、ActivityStack关系

一个ActivityRecord对应着一个Activity,而一个Activity可能对应着不同的ActivityRecord(因为Activity可能被实例化多次)。一系列的ActivityRecord存在于TaskRecord(一个Task就是用户体验上的一个“应用”,它将相关的Activity组合在一起,以ArrayList存储),而一系列TaskRecord存在于ActivityStack。ActivityStackSupervisor是用来管理这些ActivityStack的。

ActivityRecord对应Activity的三种类型:

static final int APPLICATION_ACTIVITY_TYPE = 0;//普通应用类型

static final int HOME_ACTIVITY_TYPE = 1;//桌面类型

static final int RECENTS_ACTIVITY_TYPE = 2;//最近任务类型

ActivityStack有五种静态栈:

0 HOME_STACK_ID //Home应用以及recents app所在的栈

1 FULLSCREEN_WORKSPACE_STACK_ID //一般应用所在的栈

2 FREEFORM_WORKSPACE_STACK_ID //类似桌面操作系统

3 DOCKED_STACK_ID //分屏的应用所在的栈

4 PINNED_STACK_ID //画中画栈

1.2 为什么要定义多个ActivityStack?

ActivityStack主要用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值