用于与UI

时间:2016-04-01 00:01:13

标签: android multithreading android-asynctask

我有点困惑如何在我的应用中使用ThreadAsyncTaskService进行选择。

我的用例是一个带倒数计时器的节拍器,可以帮助用户练习一些吉他和弦。我有几个控件可以播放并暂停练习,倒数计时器必须在更改时更新ui。

显然,我不想把计时器和节拍器代码都放到主线程中,所以我的选择是:

线程:我启动两个线程分别播放节拍器和定时器;但处理所有角落案件真的很痛苦,我知道有更好的解决方案。 (所以我放弃了这个选项)

AsyncTask :这是一种稍好的方法,但是如果我旋转屏幕,它会再次启动节拍器和计时器。另外,我已经读过,不建议长时间运行AsyncTask。

服务:这个似乎是更好的选择,因为它专为长时间运行而设计。另一方面,服务不应该用于与UI交互。

我打算使用服务,使用它与UI交互有什么缺点?

1 个答案:

答案 0 :(得分:4)

缺点是您必须找到一种方法让服务与正在使用它的Activity进行通信。服务根本不能直接与UI交互,也不能与之交互。

通常人们会使用事件总线在服务和活动之间进行通信。