我们知道在Android中,经常看到AndroidManifest.xml文件中有一些主件会添加一个process属性,大多数都是在service组件中添加的,例如:
<service
android:name="com.ebanswers.sample.GuardService"
android:process=":guard" />
其中gurad可以随意起名字,前面的冒号则表示该guard进程是主进程的一个子进程,一般来说主进程的进程名即为应用的包名。例如当前应用包名为:com.ebanswers.sample那么GuardService所在的进程名则为:com.ebanswers.sample:guard。之所以开一个子进程大部分原因主要是尽量防止该组件被杀,这也是为什么大部分用到这个属性的组件会是service。当然防止service被杀的方法有很多,例如:开启前台服务,双进程互相监听,利用广播等等这里就不一一介绍了。 可以看到其实很多sdk也都用到了这个属性,诸如:极光推送,百度定位,喜马拉雅等等,所以还是有必要了解一下。
值得注意的一点就是如果你的应用继成了Application来实现自己的Application的话,那么对应的该Application的onCreate方法则会走1+n次其中n代表了你开了几个子进程,所以在onCreate方法中做一些初始化工作的时候特别要注意这一点。