Android会主动管理自己的资源,它会采取任何措施来保证稳定流畅的用户体验。这就意味着,在android管理进程的时候,会在没有任何提示或警告的前提下,终止一些进程,以便为优先级高的进程提供资源。
在Android回收资源的时候,进程的终止顺序是根据进程的优先级来决定的。一个应用程序的优先级等同于它所包含最高优先级的组件的优先级。
当两个应用程序具有相同优先级,Android需要释放资源时,运行时间最长的应用程序会首先被终止(释放资源)。
当一个应用程序A依赖于另一个应用程序B所提供的某些支持(Service或Content Provider),那么应用程序B会拥有与应用程序A相同的优先级。
所有的应用程序都会保持在内存中,直到Android需要释放它的资源提供给其它应用程序为止。
Android进程从优先级角度可以分为以下几个类型(优先级由高到低排列):
1.Active进程(前台进程),它的组件正在与用户交互,为保证稳定流畅的交互,Android都是通过释放其它进程资源以保持前台进程的响应,所以Active进程拥有最高的优先级。
2.可见进程:是指被用户“可见”的,但是不响应用户操作的进程,比如被一个非全屏或半透明的activity遮挡时,就会出现可见进程
3.Service进程,Service没有用户界面,一般在后台提供服务,比如音乐、下载;除非可见进程或者Active进程需要资源时,这一类进程不会轻易的终止,再终止过后,当系统有资源时,这类进程会重新启动。
4.后台进程:指不可见,也不提供任何服务的进程,这类进程会按照last-seen-first-killed(最后看见最先终止)的方式来终止他们。
5.空进程:为了提供系统整体性能,Android会为已经停止的进程提供缓存来减少再次启动时所消耗的时间,这些进程会被定期终止。