Android:如何根据用户设置在启动时启动服务?

0 android

我正在尝试编写一个由管理后台服务的活动组成的应用程序.但是,我想实现一个用户设置,以便在启动时自动启动服务.我有使用SharedPreferences实现的用户设置,我通过使用BroadcastReceiver并监听BOOT_COMPLETED来启动服务.

但是,我无法找到实现设置的好方法,这样只有启用了所述设置才能在启动时启动服务.我可以想到一些廉价的方法(例如在服务中弄乱onCreate(),或者在SD卡上创建/检查文件)但我想遵循良好的做法.

必须有一个很好的方法来做到这一点,因为那里有大量的应用程序,我在网上找不到任何关于如何做的事情.

谢谢

hac*_*bod 10

最好的方法是使用PackageManager.setComponentEnabledSetting():http://developer.android.com/reference/android/content/pm/PackageManager.html#setComponentEnabledSetting (android.content.ComponentName ,int,int)

因此,通过在清单中设置android:enabled,可以简单地决定是否要默认启用接收.然后使用此API在运行时根据需要显式启用或禁用该组件.如果组件被禁用,则在启动时它将不可用,因此不会接收广播.

Fwiw使用这种方法比在接收意图时检查首选项要好得多,因为它避免了系统每次启动时都必须启动应用程序.随着越来越多的应用程序想要在启动期间启动以执行某些操作,如果他们不需要那么根本不启动它们是一件好事.