为什么我应该将urbanairship服务作为一个单独的流程启动?

时间:2011-12-02 11:59:51

标签: android process android-manifest urbanairship.com

我使用UrbanAirship(UA)进行推送通知。

UA推送服务在Manifest文件中配置如下:

    <service android:name="com.urbanairship.push.PushService"
     android:process=":com.urbanairship.push.process" /> 

其中android:process是可选的,但是recommended in their documentation

当我使用单个进程并关闭我的所有活动时,我可以看到我的单个进程占用了大约3mb的内存

当我使用两个进程(一个用于应用程序,一个用于服务)并关闭所有活动时,我可以看到两个进程都处于活动状态,每个进程占用大约3mb的内存。 / p>

所以我的问题是:重点是什么?

1 个答案:

答案 0 :(得分:1)

我的猜测是,UA建议这样做,以便他们自己的代码将面临更少的争用/中断。例如,如果您的应用程序崩溃但UA代码在单独的进程中运行,那么他们可能会继续运行而不会中断(并避免在托管它们的进程突然被杀死时可能发生的数据损坏)。

另一条线索,请参阅此问题:Starting an Android notification at startup。正如您所看到的,一些开发人员报告说,一般的Android通知有时会无法显示,具体取决于应用程序组件的生命周期。通过将UA PushService放入单独的进程,这可以缓解此问题。我打算对此进行测试,因为重启后我的UA通知有时不会持续存在。

顺便说一句,似乎最新的UA文档不再建议使用自己独立的流程来声明服务。