繁体   English   中英

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

[英]Foreground service: how to handle user enable/disable

我的Android应用程序是前台服务,我希望用户可以选择在需要时禁用该服务,而不必卸载整个应用程序。

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

请有人可以与我分享他们的知识,让我知道我不是不必为此担心,也不必担心这样做的正确程序/方法是什么? 我找不到任何提供指导的文档或帖子。

我提前谢谢你。

答:请参阅下面的CommonsWare答案,这是一些有用代码的链接,也是CommonsWare提供的

进一步阅读后,清单中将服务设置启用为true不会导致任何循环。

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

那句话对我来说并没有完全解析-我看不到您担心的循环。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM