● 摘要
Android系统自从2007年推出以来,在智能手机已经占据了超过70%的市场份额,同时在平板电脑和智能电视领域也展露了其非凡的魅力。许多用户希望可以同屏操作多个应用,如何让系统支持多个窗口同时运行,在目前的Android系统还无法实现此功能。要实现多窗口功能需要解决的问题主要包括系统多窗口显示问题,多窗口之间的自由切换,多窗口运行时的生命周期的合理维护,以及多窗口工作的分配和管理等。目前国外三星公司、一些个人和组织等在多窗口方面做了大量的研究工作,但其主要研究和开发的也仅仅是具有多窗口功能的一些第三方App,比如浏览器,播放器等,没有从Android系统层面来解决多窗口的功能实现,而国内关于这个方面的研究还非常少。
本文主要是改变了Android系统原有的窗口显示和管理机制,而不仅仅只从应用层来实现第三方应用的多窗口的功能。通过Android平台多窗口系统主框架与核心模块间通讯接口设计、App窗口化显示问题、双窗口与全窗口切换,窗口焦点的自由切换这几个方面的问题来设计实现了基于Android 4.4版本具有多窗口功能的系统的开发。本文是在framework层改变了系统原有的只显示单个Activity的机制,让其可以同时显示多个Activity的解决方案。重点对framework层的ActivityManagerService(即AMS)和WindowManagerService(即WMS)等相关模块的代码进行改进,让其从系统层面就支持同屏中能显示多窗口的功能。并开发了应用程序SPlitLauncher来管理支持多窗口功能应用程序。
测试表明,本系统运行安全稳定,多窗口切换效果流畅,而且从系统层面实现了多窗口显示操作的功能,适用于所有的应用程序。多窗口操作的功能,能在大屏幕的设备上具有更好的用户体验。虽然本文开发的多窗口系统已经完成,由于时间仓促还是有很多不足的地方。本文对于Android平台的多窗口系统设计期望能够为未来的多窗口设计与研究提供借鉴与参考的价值。