我的Android应用程序是一个前台服务,我希望用户能够随时禁用该服务,而无需卸载整个应用程序。
我在清单中使用enabled = true标签并完成启动以在前台启动服务。我担心的是,如果我有一个非常基本的全局布尔值(在服务的onCreate中)userEnabled = false以防止服务启动(stopSelf),Android将继续尝试启动我的服务,这将导致循环和因此使用不必要的资源?
请有人可以与我分享他们的知识,让我知道我要么不关心这个,要么正确的程序/方法来做到这一点?我找不到任何指示方向的文件或帖子。
我提前感谢你。
答案:请参阅下面的CommonsWare答案,这里是一些useful code的链接,也是CommonsWare的链接
在进一步阅读之后,没有循环可以通过在Manifest中启用服务集true来实现。
答案 0 :(得分:1)
我担心的是,如果我有一个非常基本的全局布尔值(在服务的onCreate中)userEnabled = false以阻止服务启动(stopSelf),Android将继续尝试启动我的服务,这将导致循环,因此使用不必要的资源?
这句话并没有完全解析我 - 我没有看到你担心的循环。
话虽如此,如果您希望用户控制您的服务是否在启动时启动,请使用PackageManager
和setComponentEnabledSetting()
停用BOOT_COMPLETED
BroadcastReceiver
当用户禁用您的服务时。这样,在重新启动时,您将无法获得控制权,因此无法启动该服务。如果用户重新启用您的服务,请再次使用setComponentEnabledSetting()
重新启用BOOT_COMPLETED
BroadcastReceiver
。