java - 前台服务: how to handle user enable/disable

标签 java android

我的 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?

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

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

关于java - 前台服务: how to handle user enable/disable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12030682/

相关文章:

java - 在 Java 中,如何将 InputStream 转换为字节数组 (byte[])?

java - 试图停止线程,但它又开始了

java - REST 从 jQuery : Method Not Allowed error 中删除

java - 获取来自 Gmail 的最后 20 封电子邮件(Java Android)

java - 如何在单击的单个按钮上调用 Activity ?

android - 从 db-models 响应 native 获取

java - 在Android中如何检查设备是否有前置闪光灯(Camera2 API)

android - 在 alertdialog-Android 中更改 ImageView 的可见性

android - 为什么我得到 : threadid=3: reacting to signal 3 and game freeze (AndEngine)?

java - Exiftool 从一个目录创建多个 JSon 文件