做 android 1 年多今天发现 一个应用内也可以有多个进程的, 在这里记录一下
android 默认只有一个主进程, 4 大组件都在同一个主进程中运行
但 service、broadcast、activity provider 都可以通过指定 android:process 来启动一个新进程运行
项目中引用了一个第三方库,在退出应用的时候调用了 android.os.Process.killProcess(android.os.Process.myPid()) kill 掉了当前进程
而我们集成了极光推送导致极光推送的 service 也没了, 应用退出后就收不到推送了
怎么办呢, 把极光推送的 JPushService 放到一个单独的进程中去就行了, 上面的代码只会 kill 掉主进程, 不会杀死其它的进程
<service android:name="cn.jpush.android.service.PushService" android:enabled="true" android:process=":JPushService" > <intent-filter> <action android:name="cn.jpush.android.intent.REGISTER" /> <action android:name="cn.jpush.android.intent.REPORT" /> <action android:name="cn.jpush.android.intent.PushService" /> <action android:name="cn.jpush.android.intent.PUSH_TIME" /> </intent-filter> </service> <service android:name="cn.jpush.android.service.DownloadService" android:enabled="true" android:process=":JPushService" > </service>
打开 DDMS 可以看到我们的应用现在有 2 个进程在运行了, back 键退出 主进程 销毁, JPushService 所在的进程还在
时间: 2024-10-05 17:05:13