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

时间:2013-09-20 03:29:06

标签: android performance memory-management media-player

我是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对象。?

1 个答案:

答案 0 :(得分:3)

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