Shadow的跨进程设计与插件Service原理

在Android系统中,应用可以是多进程的。这在移动端操作系统中应该是非常高级的设计了,很多移动端操作系统、嵌入式系统都是不支持的。多进程程序给程序设计带来了很有优点,也带来更多的复杂性。

Android系统中的“四大组件(Activity,Service,Receiver,Provider)”全都是可以跨进程通信的组件(下文中的组件指的都是这些组件)。每个组件都可以在AndroidManifest中配置到一个指定的进程。Android系统其实不允许应用自己管理自己进程的生命周期。但是由于我们只要Start一个Intent启动属于那个进程的组件,就能启动那个进程。再用Java一般的进程操作API,比如System.exit()方法就能杀死一个进程。由于这些很容易做到的特点,让很多Android开发以为自己可以管理进程。实际上这样理解Android进程是不对的。Android系统对进程的设计是这样的,系统收到需要用到某个组件的请求时(比如start Activity或bind Service),就会检查这个组件在AndroidManifest中注册的进程是否已经启动了。如果这个进程还没有启动,系统就会首先启动这个进程,然后构造一个应用注册的Application对象,调用Application对象的attachBaseContext()方法。然后构造所有注册了应该在这个进程的ContentProvider,初始化它们,调用它们的onCreate()方法。确保后面所有组件,包括还没有被调用的Application对象的onCreate()方法都能正常使用这个进程的所有ContentProvider。然后再调用Application对象的onCreate()方法。最后才开始初始化本来需要用到这个进程的组件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值