3

Activity約150回再生したMediaPlayer後、「ビデオを再生できませんでした」というシステムメッセージが表示されることがあります。アプリを強制的に再起動すると、この問題はさらに 150 回再生されます。

私はこれが何らかのメモリ リークであると想定していますが、何がリークしているのかは完全に不明であり、その症状は Android がアプリに割り当てるメモリ量と一致しません。ビデオは約 3 MB であるため、再生ごとにそれほどリークしている場合、アプリが 450 MB のメモリにアクセスできることを意味しますが、これは真実ではありません。

いずれにせよ、どうにかしてビデオを手動で解放できるかどうかを確認しようとしていますが、コールバックに渡されIllegalStateExceptionたリリースを呼び出したときに取得しています。MediaPlayeronCompletion

私のコードは次のようになります。

VideoView vv = (VideoView)findViewById(R.id.movie);
Uri videoURI = Uri.parse("android.resource://" + getPackageName() + "/raw/video_in" );
vv.setVideoURI(videoURI);
vv.start();
vv.setOnCompletionListener(new OnCompletionListener() {         
    @Override
    public void onCompletion(MediaPlayer mp) {
        Intent i = new Intent(getPackageName() + ".SCENE_2");               
        startActivity(i);
        mp.stop();
        mp.release();//here the exception is raised
        finish();
    }
});

ドキュメントは、で release を呼び出すことができない状態がないことを暗示しているように思われるMediaPlayerので、困惑しています。違いが生じる場合に備えて、私はJellyBeanにいます。

4

0 に答える 0