我正在研究通過多線程在後臺播放音樂的程序,因爲否則GUI會凍結。我有多線程(易失性,同步等)的基本知識,但我想知道如何立即停止/暫停線程(即使進程正在處理)。我有背景音樂循環播放,但如果我將一個停止變量掛到循環中,那麼歌曲必須停止播放才能停止播放音樂。所以我的問題仍然存在,從父線程有什麼方法立即暫停或終止在歌曲中間的音樂,因爲我有音頻後播放。在JFugue中暫停音樂
0
A
回答
1
首先,在一個線程中最環路應類似於此:
while(!isInterrupted()) {
try {
// do something (like play song)
} catch (InterruptedException e) {
interrupt();
}
}
如果有內環路阻塞調用(這聽起來像是你的描述),他們可能允許中斷()。從線程外部調用interrupt()將打破阻塞調用並將您轉儲到catch塊中。這最終會清除「中斷」標誌,所以你需要再次調用中斷才能退出循環。
視您正在播放音樂:
- 如果您使用的是有一個「暫停」一庫或「停止」的方法來播放音樂,你可以使用它。看起來你正在使用jFugue - 它的播放器有一個暫停()方法 - 你試過調用它嗎?
- 如果你正在做別的事情,你需要跟蹤歌曲的位置並在線程中調用interrupt()。如果你想重新開始,你需要尋求回追蹤的位置
請注意,如果你想與上述循環重新開始,你需要一個嵌套的循環如:
while(true) {
while(!isInterrupted()) {
...
}
}
如果您只有!isInterrupted()循環,則該線程將完成並且無法重新啓動。
希望這會有所幫助!
+0
注:我剛剛注意到這個主題提到jFugue。我查看了文檔,其Player類有一個pause()方法。你嘗試過嗎? –
相關問題
- 1. 播放,暫停,停止音樂與UIActionSheet
- 2. IOS - 暫停和取消暫停當前正在播放音樂
- 3. 如何在Android中錄製音頻時暫停背景音樂
- 4. 在iOS中播放聲音會暫停背景音樂
- 5. 在iOS中暫停/靜音背景音樂
- 6. 暫停用戶背景音樂
- 7. 暫停/播放背景音樂
- 8. 暫停滾動背景音樂
- 9. 暫停音樂手機響起時?
- 10. 暫停後恢復音樂Phonegap
- 11. 如何編碼停止/暫停windowsphone7中的Zune音樂
- 12. 在Mac上暫停播放Swift中的音樂
- 13. 如何在Flash遊戲中實現音樂的「暫停」按鈕?
- 14. 如何在android中暫停不同的音樂播放器?
- 15. 檢測其他音樂是否在IOS中暫停?
- 16. 播放HTML5音頻時,原生iOS音樂播放器暫停
- 17. 停止音樂應用播放音樂
- 18. 停止音樂結束後的音樂
- 19. Phonegap Builld媒體插件暫停正在播放的音樂
- 20. 如何檢查是否音樂播放或暫停在AudioQueue
- 21. 如何在播放YouTube視頻時暫停背景音樂
- 22. 當音樂播放器正在暫停時檢測
- 23. Android背景音樂遊戲在循環播放之前暫停
- 24. 當切換到另一個頁面時,暫停音樂在php
- 25. 停止音樂OpenGL
- 26. 爲音樂切換mc播放/暫停按鈕不起作用。在庫中鏈接導出(AS)的音樂
- 27. 當其他聲音文件播放時調低音量/暫停音樂
- 28. Cordova/Phonegap防止在使用靜音內聯視頻時暫停背景音樂
- 29. 暫停Div懸停音頻
- 30. 在Java中停止播放音樂
是否要暫停音樂或暫停主題? (提示:你想暫停音樂,而不是線程,該線程可能會有一個關鍵的鎖。) –
@DavidSchwartz然後是的,我想暫停音樂,我會改變標題。 – EpicDavi