【发布时间】:2020-08-31 14:38:01
【问题描述】:
如果声音文件已经加载到内存中,那么将“null”分配给 SoundPool 对象是否可以为设备节省一些资源?
【问题讨论】:
如果声音文件已经加载到内存中,那么将“null”分配给 SoundPool 对象是否可以为设备节省一些资源?
【问题讨论】:
如果你想释放资源......请致电SoundPool.release()。 javadoc 说:
释放
SoundPool资源。释放SoundPool对象使用的所有内存和本机资源。SoundPool不能再使用,引用应设置为null。
只需将保存您应用的SoundPool 引用的变量清空可能使其无法访问,并且资源可能在未来某个时候被垃圾收集器回收.
但是,根据我对 API 的阅读,如果您调用 release 或只是将 null 分配给变量,您将无法再调用 SoundPool 方法来播放、暂停、恢复和等等您之前加载的声音文件。所以这可能不是你想做的。
【讨论】:
SoundPool 不能再使用,引用应设置为null。” 在SoundPool 上调用release 后,将引用设置为null。需要明确的是,调用release() 会释放资源,分配null 会阻止您使用该对象...并为您提供一种向应用指示池资源已被释放的方法。