如何以编程方式在android中重新启动服务?


Android中,我有一个具有不同活动和服务的应用程序.这些活动用于直接用户交互,用户可以在其中更改数据,更新数据,输入数据等.

应用程序还使用用户输入的数据(库存数据)运行(后台)服务.如果某些条件匹配,该服务定期检查股票价格(例如每12小时)并向用户发出通知.

但是,作为用户,我希望能够更改此服务的设置.我启动应用程序,并可以在存储在SharedPreference中的应用程序活动之一中输入更新间隔.我可以更改该值,例如,让服务每3小时检查一次库存数据.

那我必须’重启’服务吗?据我了解操作系统中的“服务”,该服务会在某些事件停止之前运行.但是,如果服务没有停止,服务不会“注意到”更新间隔已经改变!因此,在我的主要应用程序的活动中,我需要一些方法来“重启”服务,因此它会在3小时内检查股票价格,而不是在12小时内检查!

知道怎么做到这一点?谷歌搜索并没有真正帮助.也许我找错了关键词……?

最佳答案 一个简单的解决方案,因为您的服务在与应用程序相同的过程中运行,将服务的onCreate方法中的OnSharedPreferenceChangeListener注册到活动正在更新的相同SharedPreferences.

然后,每次优先更改onSharedPreferenceChanged(…)将在您的服务中调用.您可以检查更新间隔首选项何时更改并相应地更新服务,而无需重新启动它.

点赞