5.2 应用进程托管
在Android中,应用进程的构造与销毁都是由系统全权掌控的,这种模式本书称为应用进程托管。在托管进程的模型下,开发者无须关注所调用的组件运行在哪个应用进程中,该进程是否已经构造,何时会被销毁等相关问题。
应用进程托管是Android架构的核心之一。Android通过进程的托管,在没有虚拟内存机制的情况下,实现了多进程多任务的并发处理。托管策略的优劣决定了整个系统运行效率的高低及资源开销的大小。
5.2.1 为什么需要进程托管
进程托管的引入,一方面是为了简化编程模型。Android应用是基于组件来构造的,而组件之间的通信是可以跨进程跨应用来进行的,这和传统的基于进程的编程模型完全不一样。因此,如果将应用进程生命周期的控制工作都交给开发者,就需要开发者去了解每个调用组件运行进程的实现细节,增加了额外的工作量。而有了进程托管,开发者就不需要再去关注进程生命周期的细节,只需要专心处理组件本身的逻辑即可。
更重要的一方面是,进程托管是为了全局调度以及优化进程对系统资源的使用。Android是一个多任务系统,它允许多个应用进程同时运行。而为了能在更多的移动设备中运行,Android并不支持虚拟内存(这需要一定的硬件支持)。如果有虚拟存储的支持而且系统中运行的进程过多,耗费了太多的内存空间,就可以将部分内存数据移到外存储设备中暂时存储;没有虚拟存储的支持,Android就只能够通过终止进程的方式去换取更多的内存空间。这就要求系统对所有进程的生命周期有明确的了解,并对各个进程有绝对的控制权。
因此,对于Android而言,进程托管是必要的。系统通过了解各应用进程的运行状况来决定何时回收什么进程,以保证系统的高效运转。