【问题标题】:Playing short sounds in separate thread在单独的线程中播放短声音
【发布时间】:2014-04-06 11:42:08
【问题描述】:

在我的安卓游戏中,有 36 个落球。当球触地时会发出声音。声音很小,只有0.3秒。我正在使用soundpool 类来播放它。游戏中可能会发生所有 36 个球快速连续落下的情况。多次播放声音可能会阻塞 UI 线程。是否建议在单独的线程上播放声音?

【问题讨论】:

    标签: android multithreading soundpool


    【解决方案1】:

    是的!您应该在单独的线程上播放声音。检查为类似问题提供的解决方案here

    【讨论】:

    • 不会为每次播放声音产生一个新线程会影响性能/动画?
    • 您使用的是 OpenGL 还是 Canvas?在 OpenGL 中,GLSurfaceView 创建 UI 线程和 Renderer 线程。 Renderer.onDrawFrame() 应该做最少的工作来获得最高的 FPS。声音、音乐和游戏逻辑(AI、物理等)不需要运行每一帧,所以你可以把它们放在另一个线程中。您不必在每次播放声音时“生成”一个新线程。
    • thread.start() 只能使用一次,因此要在非 UI 线程中重放声音,必须生成一个新线程
    • 好的,我明白了。您启动线程以播放声音并在声音完成播放时“停止”它。如果您不是快速连续玩,这没关系,但在您的情况下,这是不可取的。我的意思是 - 启动线程一次并在它的 run() 方法中播放/停止声音。然后在游戏结束/重新启动时“停止”线程
    • 当 run 方法执行后,线程会自动死掉……对吧?那么如何根据用户输入重复使用它来一次又一次地播放声音。
    猜你喜欢
    • 2012-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多