我的 Android 应用程序是前台服务,我希望用户能够随时禁用该服务,而无需卸载整个应用程序。
我在 list 中使用enabled = true标签并启动完成以在前台启动服务。我担心的是,如果我有一个非常基本的全局 boolean 值(在服务的 onCreate 内) userEnabled = false 来阻止服务启动(stopSelf),Android 将继续尝试启动我的服务,这将导致循环因此使用不必要的资源?
请有人与我分享他们的知识,让我知道我不必担心这个问题,或者知道执行此操作的正确程序/方法?我找不到任何提供指导的文档或帖子。
我先谢谢你了。
答案:请参阅下面 CommonsWare 的答案,这里是一些 useful code 的链接。 ,同样由 CommonsWare 提供
进一步阅读后发现,在 list 中将服务设置为 true 不会导致循环。
最佳答案
My concern is that should I have a very basic global boolean value (inside onCreate of the service) of userEnabled = false to prevent the service from starting (stopSelf), Android will continue to attempt to start my service which will result in a loop and therefore use unnecessary resource?
这句话对我来说并没有完全解析——我没有看到你担心的循环。
话虽这么说,如果您希望用户控制您的服务是否在启动时启动,请使用 PackageManager
和 setComponentEnabledSetting()
禁用您的 BOOT_COMPLETED
BroadcastReceiver
当用户禁用您的服务时。这样,在重新启动时,您将无法获得控制权,因此也不会启动该服务。如果用户重新启用您的服务,请再次使用 setComponentEnabledSetting()
重新启用 BOOT_COMPLETED
BroadcastReceiver
。
关于java - 前台服务: how to handle user enable/disable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12030682/