开始即为成功的一半,占位先
Processes and Threads
- 假设有一个Android应用程序名字叫做DemoA。
- 前提条件:DemoA完全没有任何组件在运行。
- 时机:当DemoA开始启动运行时。
- 现象1:Android系统会为这个应用程序启动一个新的Linux进程并且运行一个单独的线程。
- 现象2:在默认情况下,同一个应用的所有组织会运行在相同的一个进程以及相同的一个线程(也被称为
主线程||UI线程
)中。如果一个应用程序的组件启动时,系统中已经存在这个应用运行的进程(因为应用程序中已经有其它组件在运行),此时这个组件会运行在当前这个进程以及线程中。 - 当然,我们可以运行不同的组织在自己单独的进程中,并且我们可以为任一进程创建额外的线程。
Processes
通常情况下,我们的所有组件都是运行在同一个进程中,但是如果我们想让某些组件运行在特定的进程中,我们可以在AndroidManifest.xml
中使用如下方法去控制,其中四大组件(activity
,service
,receiver
,provider
,)都支持以下属性
|
|
用上述属性你可以做到以下事情:
- 不同的组件在不同的进程中
- 一些组件共享一个进程
- 甚至不同应用的组件在相同的进程中(前提条件:这些应用共享相同的Linux User ID以及相同的签名证书)
application
同样支持这一属性,这意味着可以为所有组件设置默认值。
系统会在内存不足而其它进程需要立即用户响应时杀掉当前进程、此时进程内所有组件会被销毁。当这些组件需要重新启动时进程才会重新启动
系统会根据进程的权重来决定杀死哪个进程