我有点困惑如何在我的应用中使用Thread
,AsyncTask
或Service
进行选择。
我的用例是一个带倒数计时器的节拍器,可以帮助用户练习一些吉他和弦。我有几个控件可以播放并暂停练习,倒数计时器必须在更改时更新ui。
显然,我不想把计时器和节拍器代码都放到主线程中,所以我的选择是:
线程:我启动两个线程分别播放节拍器和定时器;但处理所有角落案件真的很痛苦,我知道有更好的解决方案。 (所以我放弃了这个选项)
AsyncTask :这是一种稍好的方法,但是如果我旋转屏幕,它会再次启动节拍器和计时器。另外,我已经读过,不建议长时间运行AsyncTask。
服务:这个似乎是更好的选择,因为它专为长时间运行而设计。另一方面,服务不应该用于与UI交互。
我打算使用服务,使用它与UI交互有什么缺点?
答案 0 :(得分:4)
缺点是您必须找到一种方法让服务与正在使用它的Activity进行通信。服务根本不能直接与UI交互,也不能与之交互。
通常人们会使用事件总线在服务和活动之间进行通信。