多窗口是*操作系统的一项功能,可以使您的应用程序独一无二。 许多原始设备制造商(OEM)和原始设计制造商(ODM),例如三星、拉莫斯、华为等,都利用此功能进行产品推广,取得了良好的效果。 本文介绍了多窗口功能并展示了如何在您的应用程序中实现它。
图 1. 多窗口用例
介绍
2012年6月,第一个开源多任务框架命名为. 2012年8月,三星发布了首款多窗口商用产品。 从 2013 年至今,市场上的多窗口解决方案数量呈指数级增长(见图 2)。
图2. 多窗口演进
多窗口主要呈现两种风格:浮动风格和对接风格。 多窗口功能通常包括打开/关闭、调整大小和切换(交换)功能。 开/关功能启用/禁用该功能。 调整大小功能允许用户更改窗口的大小。 切换功能交换窗口的位置。
图 3. 多个窗口的窗口样式
2013年,一些由OEM/ODM、ISV或开源社区开发的解决方案上市。 下表比较了不同的多窗口解决方案。
特征
绑
描述操作系统的多任务框架 可用于创建浮动应用程序的开源库 支持停靠窗口样式的多窗口应用程序 该项目旨在创建类似桌面的用户体验
开/关、调整大小、最大化 支持 支持 支持 支持
窗口样式 停靠浮动 停靠/浮动
代码修改框架 应用层框架 框架
应用程序支持支持所有应用程序,但无法动态调整一些辅助应用程序,例如计算器。需要提高应用程序兼容性和稳定性以支持所有应用程序
版本4.1~4.4.1~
4.4.4.4
官网软件架构
您可以调整框架代码以容纳更多功能。 操作系统架构可以分层。
从 4.2 和 4.3 开始,启动器和其他应用程序在一个堆栈上运行,称为“主堆栈”。 众所周知,多窗口需要更多的堆栈来包含多个窗口,因此我们需要调整框架的类,添加堆栈创建和堆栈管理接口。 调整框架以供查看的类,我们需要调整框架以将触摸事件分派到相应的窗口。
新发布的4.4和5.0对堆栈管理进行了重大调整。 启动器和其他应用程序运行在不同的堆栈上,并添加堆栈和堆栈管理功能。 堆栈中不同版本之间的差异如下所示。
图 4. * 4.3 和 4.4 之间的堆栈管理差异
我们现在关注5(代号“”)。 众所周知,*操作系统使用回调方法来触发活动的接口函数。 但主要功能是在框架上执行的,所以让我们介绍两个重要的类:ce 和 。
图5 软件结构
事件管理
由于多窗口功能主要依赖于栈,所以我们来介绍一下如何创建栈以及如何在栈上启动一个。
在 .java 中添加了以下接口功能。
表 1. 源代码更改
.java新接口函数
描述
void (int , int , toTop) 将任务移动到另一个堆栈
void (int , Rect ) 调整堆栈大小
void (int) 设置当前焦点堆栈
(int) 获取任务是否在
启动时,该进程将启动活动管理服务和窗口管理服务。 我们可以添加语句来跟踪流程。
图 6. 堆栈创建进度
现在让我们看看如何在堆栈上启动一个活动。