gpt4 book ai didi

android - SoundPool.load() 是否设计为异步加载?

转载 作者:行者123 更新时间:2023-11-29 00:12:30 28 4
gpt4 key购买 nike

似乎有几个用户注意到 SoundPool.load() 随着 Lollipop(hereherehere)的发布而倒退:

它的要点是许多开发人员,包括我自己,以前在 UI 线程中调用过 SoundPool.load(),这在早期版本的 Android 中运行良好,但从 Lollipop 那里使用 SoundPool.load() 加载小声音时,似乎延迟了十分之一秒。

我没有在 Android 文档中找到任何暗示 SoundPool.load() 会异步加载声音的引用资料,但是,早期版本的 Android 中的行为以及 的存在code>OnLoadCompleteListener 会暗示这一点(否则监听器有什么意义?)

我的问题是:SoundPool.load() 是否应该异步加载声音,我是否可以按照这个设计,并期望这个问题得到修复,或者我应该开始放置这段代码在 AsyncTask 或其他后台线程机制中?

最佳答案

异步 并不一定意味着在后台线程上运行

SoundPool.load() 显然是异步运行的。问题是它是在调用线程(通常是主线程)上运行,还是在单独的线程上运行。

load() 调用原生 _load() 方法,相当于 android_media_SoundPool.cpp 中的 android_media_SoundPool_load_FD|

按照从那里开始的逻辑进入 SoundPool.cpp , SoundPool.h , 和 SoundPoolThread ,虽然我不太精通 C++,但它似乎很清楚它在后台线程上执行实际工作。

在某些设备上加载声音确实需要很长时间(在小型 LGE tracfone 上需要 20 多秒,但在更现代的三星 S6 上不到 1 秒),因此向用户显示进度动画可能是合适的,如果无法提前加载声音。

关于android - SoundPool.load() 是否设计为异步加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29198850/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com