我正在研究通过多线程在后台播放音乐的程序,因为否则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