gpt4 book ai didi

android - Android 中的媒体播放器内存管理?

转载 作者:搜寻专家 更新时间:2023-11-01 08:55:57 32 4
gpt4 key购买 nike

我是 Android 新手。我在理解 android 中的 MediaPlayer 内存管理时遇到问题。我正在全局声明所有 MediaPlayer 对象并在 onCreate() 中创建它并在我需要它时启动它并在完成后立即释放它。我在需要时再次创建它们。这是一个好方法吗?我应该在我需要的方法中创建它们还是在 onCreate 中创建它很好?但是如果我在 onCreate() 中创建它们,我就无法释放它们。有没有其他方法可以使用 MediaPlayer 的 release() 函数来释放垃圾内存?

MediaPlayer mp,mp1,mp2......mpn;
@override
protected void onCreate(){
mp = MediaPlayer.create(getApplicationContext() , R.raw.sound);
//same for all objects.creating here will require more memory ?
}

现在,方法

private void method(){
mp.start();
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
mp.release();
mp= null;
}
});
}
//same for all objects when i need them.

我应该在哪里声明、创建和初始化它们以便进行良好的内存管理,因为我使用了很多 MediaPlayer 对象。?

最佳答案

内存不是这里的问题。你的 MediaPlayer 是一个小的代理对象,你可以保留它,也可以删除它,这并不重要。重要的是您应该尽快调用 release() ,否则真正的播放器(低级服务)可能会继续保留编解码器实例和内部缓冲区,并且在某些设备上甚至可能会保持不必要的硬件开启。

关于android - Android 中的媒体播放器内存管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18908356/

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