Android 应用启动的进程和线程
操作:
如果我们把activity的oncreate函数打上断点,使用eclipse工具观察,就会发现拉起一个新activity时产生了一个虚拟机实例进程,此进程中有许多线程也同时产生了,包括主线程和两个binder线程。(一个应用程序启动,则代表一个虚拟机实例产生,即一个进程产生。)
解释:
1. 使用eclipse工具打开主线程的函数堆栈,可以发现主线程是由ZygoteInit启动并分配的ActivityThread,经过一系列调用才调到onCreate。
2. 经过同样的操作可以发现,Service也是寄存于ActivityThread,且启动流程和Activity基本一致。
3. 在经过类似的操作可以得出结论(书中的结论,也是Android系统的设计):对于同一个AndroidManifest.xml中定义的四大组件,除非有特别的声明(在androidmanifest组件或应用标签中添加process属性,指定其所属的进程)(所以不同包的组件也可以运行在同一进程中),否则他们都运行于同一进程中,且均由主线程来处理此事。(如在同一应用中获取B组件中的静态变量值是实时的,而在别的包中即使import此包的B类,也只能获取到其初始值)
本文来自博客园,作者:小汀,转载请注明原文链接:https://www.cnblogs.com/1118zjg/p/16042310.html

浙公网安备 33010602011771号