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

如何跨android服务实例维护状态,android,service,Android,Service,我正在开发一个android应用程序,它将启动一个后台任务,最终用户需要能够停止后台任务。我的做法是: 发射活动 活动绑定到服务 活动使用针对服务的意图启动服务 服务启动后台任务并从onstart命令返回START\u STICKY 稍后,用户返回活动 活动重新绑定并重新启动服务 活动告诉服务使用从返回的IBinder中公开的方法停止后台任务 使用服务背后的原因是,我最初认为该服务将在应用程序的整个生命周期内保持活动状态,但我发现android平台必须终止我的服务,并在以后重新启动它(通过在

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

  • 发射活动
  • 活动绑定到服务
  • 活动使用针对服务的意图启动服务
  • 服务启动后台任务并从onstart命令返回START\u STICKY
  • 稍后,用户返回活动
  • 活动重新绑定并重新启动服务
  • 活动告诉服务使用从返回的IBinder中公开的方法停止后台任务
使用服务背后的原因是,我最初认为该服务将在应用程序的整个生命周期内保持活动状态,但我发现android平台必须终止我的服务,并在以后重新启动它(通过在onStartCommand中接收到空意图来确认)。不过,这没什么大不了的,只要我还有一个后台任务的控制权,我就可以干掉它。因此,我现在的方法是将对后台任务的引用存储在服务类中的静态变量中。我对此不感兴趣,但它似乎应该起作用。我面临的问题是,当服务被重新实例化时,我的静态变量已被重置,即对任务的引用为null(以及其他静态变量)。这就是我感到困惑的地方。android“进程”与传统java进程不一样吗?我不明白为什么会这样,如果是这样,静态变量应该保持它们的状态。如果不是,新服务实例如何停止以前启动的任务

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