在我的带有 Jelly Bean 4.1.1(官方)的 Galaxy Nexus 上,有时操作系统会进行疯狂杀戮,并且日志中有以下类型的条目:
10-02 22:24:34.992 I/ActivityManager( 306): Killing 7517:com.google.android.apps.reader/u0a77: remove task
10-02 22:24:36.484 I/ActivityManager( 306): Killing 7465:com.tf.thinkdroid.sg:writedroid/u0a50: remove task
10-02 22:24:37.273 I/ActivityManager( 306): Killing 5924:com.metago.astro/u0a73: remove task
10-02 22:24:37.296 W/ActivityManager( 306): Scheduling restart of crashed service com.metago.astro/.jobs.JobService in 5000ms
10-02 22:24:37.656 I/ActivityManager( 306): Killing 7302:org.jtb.alogcat/u0a84: remove task
10-02 22:24:38.148 I/ActivityManager( 306): Killing 7120:com.google.android.gm/u0a19: remove task
不幸的是,其中一个被杀死的进程是我的远程服务,它绑定了一个正在运行的应用程序。事实上,服务会在之后立即重新启动,但这会导致我的应用程序出现不一致的行为。
在服务生命周期中它说:
服务既可以启动,也可以绑定连接。在这种情况下,只要服务已启动或有一个或多个使用 Context.BIND_AUTO_CREATE 标志的连接,系统就会保持服务运行。
我的应用程序绑定到远程服务,Context.BIND_AUTO_CREATE
所以我的印象是,只要主进程绑定到远程服务,远程服务就会一直运行。如何让 Android 不杀死远程服务?
注意:赏金是为了解释为什么代码似乎无法根据文档工作。