[英]Playing media asynctask in a service cusses other asynctasks lock
我正在使用AsyncTask播放媒體,並且正在使用服務。 問題是,當我的AsyncTask(在Service中)正在運行時,我使用AsyncTask與Web服務器進行通信的應用程序的另一部分在播放完成之前無法正常工作。 (播放媒體不緩沖它)。
我已經嘗試刪除AsyncTask並使用新的線程,但無法在此模式下更新UI。
我該怎么解決?
您可能不希望同時使用Asynctask
和Service
。 Service
是為長時間運行的后台任務而設計的。 “異步任務”旨在輕松啟動新線程,執行一些長時間運行的任務,然后將數據發送到UI線程。
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
來進行工作。
最后,我使用了服務和處理程序來創建發布延遲
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.