是否可以使用android停止服务:persistent=";“真的”;

是否可以使用android停止服务:persistent=";“真的”;,android,service,system,persistent-connection,Android,Service,System,Persistent Connection,我希望在使用系统权限时创建系统服务。服务应该绑定到一个活动,并符合以下要求 系统不会终止服务 请求时,可以停止服务 为了实现第一个要求,我使用Context.bindService()创建了一个绑定的系统服务,并在服务清单中添加了android:persistent=“true”,通知系统该服务应始终保持运行 不幸的是,在添加android:persistent=“true”之后,我无法通过Context.unbindService()或调用Context.stopService()停止服务 有

我希望在使用系统权限时创建系统服务。服务应该绑定到一个活动,并符合以下要求

  • 系统不会终止服务
  • 请求时,可以停止服务
  • 为了实现第一个要求,我使用Context.bindService()创建了一个绑定的系统服务,并在服务清单中添加了android:persistent=“true”,通知系统该服务应始终保持运行

    不幸的是,在添加android:persistent=“true”之后,我无法通过Context.unbindService()或调用Context.stopService()停止服务


    有没有可能停止使用android:persistent=“true”的服务?如果没有,我应该采取什么方法来实现这两个要求?我刚刚经历过类似的事情,您需要调用
    stopService()
    ,然后
    unBindService()
    ——按顺序调用这两个函数。将它们放在宿主活动的
    ondestory
    方法中。此外,为了防止您的服务像我的一样被AlarmManager定期唤醒,请确保同时调用
    cancel()

    您可能知道,您可以在ApplicationManager中检查是否正在运行服务。在测试这些更改时,强制停止使用旧代码运行的任何服务


    关于
    persistent
    标志,我认为它只对系统应用程序开发人员有效。在常规的marketplace应用程序中,我认为该标志被忽略。

    请注意,我正在使用允许在创建系统服务时使用持久性的系统密钥对服务进行签名。Jason我通过调用Context.bindService()创建了我的服务,因此调用Context.unbindService()应该会破坏进程,如中所述如果组件调用bindService()来创建服务(而未调用onStartCommand()),则只有组件绑定到服务时,服务才会运行。一旦服务与所有客户端解除绑定,系统就会将其销毁。“不幸的是,添加android:persistent=“true”会阻止我使用这种方法停止服务。