如何跨Android服务实例维护状态

时间:2013-10-30 01:54:13

标签: android service

我正在开发一个将启动后台任务的Android应用程序,最终用户需要能够停止后台任务。我的方法是:

  • 启动活动
  • 活动绑定到服务
  • 活动使用针对服务的意图
  • 启动服务
  • 服务启动后台任务并从onStartCommand
  • 返回START_STICKY
  • 稍后,用户返回活动
  • 活动重新绑定并重新启动服务
  • Activity告诉服务使用从返回的IBinder
  • 公开的方法停止后台任务

使用服务背后的原因是我原本以为服务会在应用程序的生命周期内保持活跃,但我发现android平台必须杀死我的服务并在以后重新启动它(由在onStartCommand中接收空意图)。不过没什么大不了的,只要我仍然掌握后台任务,我就可以杀死它。所以我现在的方法是将后台任务的引用存储在服务类中的静态变量中。我对此并不狂热,但它似乎应该有效。我面临的问题是,当服务被重新实例化时,我的静态变量已被重置,即对任务的引用为空(以及其他静态变量)。这是我感到困惑的地方。 android'进程'与传统的java进程不一样吗?我不明白为什么它不会,如果它是静态变量应保持其状态。如果不是,新服务实例应该如何停止先前启动的任务?

我没有在清单中使用任何特殊的“进程”属性,只是默认值。

0 个答案:

没有答案