Android 应用启动的进程和线程

 

操作:

如果我们把activity的oncreate函数打上断点,使用eclipse工具观察,就会发现拉起一个新activity时产生了一个虚拟机实例进程,此进程中有许多线程也同时产生了,包括主线程和两个binder线程。(一个应用程序启动,则代表一个虚拟机实例产生,即一个进程产生。)

 

解释:

1. 使用eclipse工具打开主线程的函数堆栈,可以发现主线程是由ZygoteInit启动并分配的ActivityThread,经过一系列调用才调到onCreate。

2. 经过同样的操作可以发现,Service也是寄存于ActivityThread,且启动流程和Activity基本一致。

3. 在经过类似的操作可以得出结论(书中的结论,也是Android系统的设计):对于同一个AndroidManifest.xml中定义的四大组件,除非有特别的声明(在androidmanifest组件或应用标签中添加process属性,指定其所属的进程)(所以不同包的组件也可以运行在同一进程中),否则他们都运行于同一进程中,且均由主线程来处理此事。(如在同一应用中获取B组件中的静态变量值是实时的,而在别的包中即使import此包的B类,也只能获取到其初始值)

 

posted @ 2022-03-23 00:46  小汀  阅读(67)  评论(0)    收藏  举报