我正在使用AsyncTask播放媒体,而我正在使用服务。问题是,当我的AsyncTask(在服务中)运行时,我使用AsyncTask与Web服务器通信的应用程序的另一部分在播放完成之前不能正常工作。 (播放不缓冲的媒体)。
我已经尝试删除AsyncTask并使用新线程,但我无法在此模式下更新UI。
我该怎么办才能修复它?
答案 0 :(得分:0)
您可能不想要Asynctask
和Service
。 Service
是专为长时间运行的后台任务而设计的。 ' Asynctask旨在轻松启动新线程,执行一些长时间运行的任务,然后将数据发送到UI线程。
只有一个UI线程,因此,如果您要更新用户界面,则会阻止用户互动。
如果您正在播放音乐,则可能需要Service
来生成新的Thread
,以便它可以在后台不断下载歌曲。例如,如果用户按下按钮并加载视频,则可能需要Asynctask
来执行下载。
通常,可以使用Asynctask
根据用户请求下载媒体文件(或者,如果您在后台下载,则可能会使用Service
)。然后交换数据并使用Android的MediaPlayer
工具播放视频文件:
http://developer.android.com/guide/topics/media/mediaplayer.html
请注意,与Asynctask
不同,创建Service
并不意味着您已创建新的Thread
。 Service
可以在UI线程上运行。但一般来说,Service
的大多数用例都要求他们启动一个新的Thread
来完成他们的工作。
答案 1 :(得分:0)
最后,我使用了服务和处理程序来创建延迟时间