为什么多个 Android SoundPool.unload 调用根据顺序返回 true/false?

发布于 2024-12-28 12:23:18 字数 685 浏览 0 评论 0原文

根据 Android 文档SoundPool .unload 返回

如果刚刚卸载则为 true,如果之前卸载过则为 false

我创建 SoundPool,加载 5 个声音并存储相关的 5 个声音 ID。然后,在离开 Activity 之前,我为每个 ID 调用 unload,最后调用 release。我遇到的情况如下:

  • 如果我以某种顺序对每个 ID(从地图返回的 ID)调用卸载,我会系统地收到 ID 1..4 的 false 和 ID 5 的 true;

  • 如果我以与加载的 ID 相同的顺序(1 到 5)调用卸载,我会系统地收到所有 ID 的 false;

  • 如果我以与加载时相反的顺序调用卸载,5 到 1,我会系统地收到 ID 2-5 的 true 和 ID 1 的 false

有谁知道为什么会发生这种情况,以及如何使其返回 true?我担心的是没有正确清理资源,并在多次加载/卸载声音后最终出现一些内存问题。

According to Android documentation, SoundPool.unload returns

true if just unloaded, false if previously unloaded

I create the SoundPool, load 5 sounds and store related 5 sound IDs. Then before leaving the Activity I invoke unload for each of those IDs, and finally I invoke release. What I'm experiencing is the following:

  • if I invoke unload on each ID in some order (the one returned from a map) I systematically receive false for IDs 1..4 and true for ID 5;

  • if I invoke unload in the same order as IDs where loaded, 1 to 5, I systematically receive false for all IDs;

  • if I invoke unload in the opposite order as when loading, 5 to 1, I systematically receive true for IDs 2-5 and false for ID 1

Does anybody know why is this happening, and how to make it such that it returns true? My concern is to not clear up resources properly, and end up in some memory problems after looading/unloading sounds many times.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文