【发布时间】:2016-07-11 06:35:09
【问题描述】:
在 Android 中,我有一个具有不同活动和服务的应用程序。这些活动用于直接的用户交互,用户可以在其中更改数据、更新数据、输入数据等。
该应用程序还使用用户输入的数据(股票数据)运行(后台)服务。该服务会定期检查股票价格(例如每 12 小时)并在某些条件匹配时向用户发出通知。
但是,作为用户,我希望能够更改此服务的设置。我启动应用程序,并且可以在存储在SharedPreference 中的应用程序活动之一中输入更新间隔。我可以更改该值,例如,让服务每隔 3 小时检查一次库存数据。
然后我是否必须“重新启动”服务?据我了解操作系统中的“服务”,该服务一直运行直到被某个事件停止。但是如果服务没有停止,服务就不会“注意到”更新间隔发生了变化!因此,在我的主应用程序的活动中,我需要某种方式来“重新启动”服务,因此它会在 3 小时内而不是 12 小时内检查股票价格!
知道如何做到这一点吗?谷歌搜索并没有真正帮助。也许我找错了关键字...?
【问题讨论】:
-
服务是否与您的应用程序在同一进程中运行?您可以在服务中注册一个共享的偏好更改侦听器,并在偏好更改时采取相应的行动,而无需重新启动服务。
-
在同一个Manifest文件中。
-
另外,我完全不知道“注册共享偏好更改侦听器”是什么意思。一个示例代码会很棒......
-
它将始终在同一个清单文件中。只要您不使用服务上的
android:process和可能的android:isolatedProcess属性,以使用OnSharedPreferenceChangeListener将服务放入自己的进程的方式应该适合您。 -
使用起来非常简单。你可以找到一个例子here。
标签: android