前台服务:如何处理用户启用/禁用

时间:2012-08-19 23:06:01

标签: java android

我的Android应用程序是一个前台服务,我希望用户能够随时禁用该服务,而无需卸载整个应用程序。

我在清单中使用enabled = true标签并完成启动以在前台启动服务。我担心的是,如果我有一个非常基本的全局布尔值(在服务的onCreate中)userEnabled = false以防止服务启动(stopSelf),Android将继续尝试启动我的服务,这将导致循环和因此使用不必要的资源?

请有人可以与我分享他们的知识,让我知道我要么不关心这个,要么正确的程序/方法来做到这一点?我找不到任何指示方向的文件或帖子。

我提前感谢你。

答案:请参阅下面的CommonsWare答案,这里是一些useful code的链接,也是CommonsWare的链接

在进一步阅读之后,没有循环可以通过在Manifest中启用服务集true来实现。

1 个答案:

答案 0 :(得分:1)

  

我担心的是,如果我有一个非常基本的全局布尔值(在服务的onCreate中)userEnabled = false以阻止服务启动(stopSelf),Android将继续尝试启动我的服务,这将导致循环,因此使用不必要的资源?

这句话并没有完全解析我 - 我没有看到你担心的循环。

话虽如此,如果您希望用户控制您的服务是否在启动时启动,请使用PackageManagersetComponentEnabledSetting()停用BOOT_COMPLETED BroadcastReceiver当用户禁用您的服务时。这样,在重新启动时,您将无法获得控制权,因此无法启动该服务。如果用户重新启用您的服务,请再次使用setComponentEnabledSetting()重新启用BOOT_COMPLETED BroadcastReceiver