我是Android的新手。我在理解安卓中的媒体播放器内存管理方面遇到问题。我正在全局声明所有 MediaPlayer 对象并在 onCreate() 中创建它,并在需要时启动它并在完成后立即发布它。当我需要它时,我会再次创建它们。这是一个好方法吗?我应该在我需要它的方法中创建它们还是在 onCreate 中创建它很好?但是如果我在onCreate()中创建它们,那么我就无法释放它们。有没有其他方法来释放媒体播放器的()函数来释放垃圾内存?
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对象。
内存不是这里的问题。您的媒体播放器是一个小型代理对象,您可以保留或删除它,这并不重要。重要的是你应该尽快调用 release(),否则真正的播放器(低级服务)可能会继续保存编解码器实例和内部缓冲区,并且在某些设备上甚至可能会保持不必要的硬件通电。