存在的进程,依据进程的优先级被系统管理着;
activity,当前虚拟机使用的内存超过最大内存的3/4,GC就会开始自动回收activity。
一个虚拟机只能跑一个进程,一个进程里可以跑多个应用,一个应用也可以跑在多个进程中,这就是他们的关系。
一个应用开启多进程会遇到以下几个问题:
1)Application的多次重建。
2)静态成员的失效。
3)文件共享问题。
4)断点调试问题。
Android如何关闭Application:
程序启动后,先执行Application.onCreate(),再执行Activity.onCreate()。如果没有生成自己的Application,那么系统会为你自动生成一个。退出程序时我们一般只调用finish()函数杀死当前Activity,Application退到幕后,由系统自动维护。再次启动程序时就不会执行Application.onCreate(),而是直接执行Activity.onCreate()。
Task任务自始至终都是从用户的角度出发而设计的概念,保证用户的调用逻辑。
Task可以理解为实现一个功能而负责管理所有用到的Activity实例的栈。
进程、Task、Activity的关系:
1、启动的Activity属于一个进程,standard、singleTop、singleTask行为正常,就像我所理解的那样。如果因为模式问题没有新建实例,那么会回调相应实例的onNewIntent()。
2、启动的Activity属于不同进程,当其模式为standard和singleTop时,启动的activity的TaskId和本应用的相同(无缝连接),不会新建Task,但是会新开启进程。虽然启动的activity的TaskId和本应用相同,但是它的Pid还是不同的。
简单说:会开启新进程,但创建的activity不属于它的进程的Task,而是属于启动它的进程的Task。
3、启动的Activiy属于不同进程,当其模式为singleTask时,会开启新进程,但其创建的activity依旧属于它的进程的Task。只是将此新进程的任务栈放在启动它的任务栈之上。
Tasks and Back stack 详解:
http://blog.csdn.net/ff20081528/article/details/17219951
Activity、Task、应用和进程:
http://www.cnblogs.com/franksunny/archive/2012/04/17/2453403.html
Android应用内多进程分析和研究:
http://blog.csdn.net/goodlixueyong/article/details/49853079