如何解决Android服务-检查变量是否在一段时间内异步更改?
| 假设我有一个布尔isAction。在我的服务中,我想运行某种计时器机制,如果此布尔值更改状态,请调用某些函数X,否则不执行任何操作。 最好的方法是什么?我尝试使用计时器无济于事,并且我不确定具有postDelayed的处理程序是否适合执行此操作,因为布尔值可以来回更改状态,这可能会给我一个\“ false isAction的“正”永不更改。 有关更多背景信息,将激发一个意图以启动服务。该服务需要确定布尔isAction是否保持相同大约一秒钟左右,如果是,则采取一些措施,否则返回并什么也不做。 谢谢。解决方法
最近,我通过将布尔值存储在共享的首选项中来做类似的事情,然后实现了registerOnSharedPreferenceChangeListener,它将注册对首选项发生更改时要调用的回调。请查看文档以获取更多信息:http://developer.android.com/reference/android/content/SharedPreferences.html
, 您不能仅使服务不时地唤醒并检查布尔值的更改。如您所说,它可能会给“假阳性”,如果它们出现两次,则不会看到任何变化。
解决方案是放置一个可观察到的观察者设计模式,该模型将在布尔值更改其值时触发一个事件,并提供将其自身注册到事件源(可观察到的)的服务。
因此,将不需要定期检查,服务将在布尔值发生变化时立即知道它们的变化。
您还可以放置一个直接方法调用以通知您的服务值更改,但这将意味着您的服务将始终启动。可能是这种情况。在这种情况下,最好将您的活动绑定到服务并通过其IBinder接口调用其方法。
问候,
斯特凡
斯特凡
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。