在我的应用程序中,我将创建多个音轨,其中一些需要同时播放。我将使用 MODE_STREAM
并在应用程序运行时写入数据。声音将动态生成,这就是我使用 Audio Track 而不是其他任何东西的原因。
我相信我有 4 个选择:
- 异步任务
- 一个 UI 线程和一个管理所有 AudioTrack 播放的线程
- 每个 AudioTrack 一个 UI 线程和一个线程
- 一个 UI 线程和一个 Thread Pool
四种方法中哪一种是管理多个 AudioTrack 的最佳方式?
我认为线程池是可行的方法,但我并不肯定,因为我还没有实际使用过它。
任何建议将不胜感激
最佳答案
为简单起见,我只是在每次播放 AudioTrack 时创建一个新线程。
但是,不管它真的没关系。我发现当尝试一次播放多个 AudioTrack 时,会发出噼啪声/断断续续的声音。我相信这只是 Android 系统的问题,而不是我的应用程序的问题。
从 API 级别 9( Gingerbread )开始,我可以将 session ID 应用于音轨,我相信这可以让我使用 SoundPool 播放它,这将使同时播放多个 AudioTrack 更加流畅。
现在,由于有很多用户仍在使用 2.2,而且我没有 Gingerbread 设备,我将把这个项目搁置到稍后。
关于android - 多音轨,单线程还是多线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7509232/