【Android系统视窗模块】Android 8与Android 9分屏模块设计差异

1. Android 9新增ActivityDisplay对象,针对每一个逻辑屏幕分配此对象,ActivityDisplay管理屏幕上每个ActivityStack显示边界以及位置;
2.  Android 9新增任务的WindowingMode与ActivityType属性,每个ActivityStack拥有此属性,启动Activity的时候系统调度在哪个ActivityStack分配任务;
3. Android 9取消了moveTaskToDockedStack函数,新增setTaskWindowingModeSplitScreenPrimary函数,该函数可将任务移动至WindowingMode与ActivityType匹配SPLIT属性栈的Stack运行;
4. Android 9不再固定主应用栈、DOCK栈、HOME栈的ID,完全由Activity属性动态查找和创建。
总结,Android 9强化了屏幕对象的概念,屏幕对象作为所有任务的最主要上下文,规定了任务对应窗体的显示屏幕、区域、大小,管理在此逻辑屏幕上所有任务栈的运行与销毁。关系如下所示:
ActivityDisplay -> ActivityStack -> ActivityRecord -> TaskRecord
新版本系统对视窗模块的重构,有利于今后大屏场景以及多屏场景的应用开发与系统定制。
TIPS: 比如一键分屏,系统可以通过扩展am stack系列命令,通过定制ActivityStackSupervisor模块,实现将HOME栈前台TOP任务移动到左分屏任务显示等,而不需依赖系统UI提供的RecentActivity实现。

你可能感兴趣的:(Android系统视窗模块,Android系统,分屏)