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

标签 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 .

当我使用单个进程并关闭我的所有 Activity 时,我可以看到我的单个进程消耗了~3mb 的内存

当我使用两个进程(一个用于应用程序,一个用于服务)并关闭我的所有 Activity 时,我可以看到两个进程都处于 Activity 状态,每个进程消耗约 3mb 的内存。

所以我的问题是:有什么意义?

最佳答案

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

有关另一条线索,请参阅此 SO 问题:Starting an Android notification at startup .如您所见,一些开发人员报告说,根据其应用程序组件的生命周期,一般的 Android 通知有时无法显示。通过将 UA PushService 放入单独的进程中,这可能会缓解此问题。我要对此进行测试,因为我的 UA 通知有时在重启后不会持续存在。

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

关于android - 为什么我应该将 urbanairship 服务作为一个单独的过程启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8356023/

相关文章:

Android - Activity 与 FragmentActivity?

java - linux后台进程

java - 更改应用程序/窗口标签和图标而不更改启动器快捷方式

android - PouchDB 与 Ionic 和应用程序更新

android - 在 Android 布局底部添加工具栏时滚动行为不起作用

Android native 库 (.so) - 不满意的链接错误

python - 如何让 python 上下文管理器捕获 SIGINT 或 SIGTERM 信号

multithreading - Erlang 和进程

android - 更新后 APK 支持的设备比以前少

java - android list 中没有默认构造函数