我知道有很多关于MediaPlayer
发布的问题,但是我搜索了几个小时,一切都相互矛盾。
简单的引用:我在MediaPlayer
中创建了一个onCreate
实例。我有一个播放和一个暂停按钮。在哪里发布MediaPlayer
?
onPause
/ onStop
导致恢复崩溃,因为onCreate
不会一直被调用。
onDestroy
似乎不可靠,因为它不会一直被调用。
那么发布MediaPlayer
中创建的onCreate
的位置在哪里?
public class MainActivity extends AppCompatActivity {
private MediaPlayer sound;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sound = MediaPlayer.create(this, R.raw.song);
Log.d("Media", "onCreate: MediaPlayer created");
Button buttonPlay = findViewById(R.id.button_play);
buttonPlay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sound.start();
}
});
Button buttonPause = findViewById(R.id.button_pause);
buttonPause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sound.pause();
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
sound.release();
sound = null;
Log.d("Media", "onDestroy: MediaPlayer released");
}
}
答案 0 :(得分:1)
onDestroy似乎不可靠,因为它不会一直被称为
或者:
onDestroy()
将被调用,或
您的流程已终止,在这种情况下,当您的流程执行时,MediaPlayer
会消失
你有一个未处理的异常,在这种情况下你有更大的问题,或
那么在哪里可以发布在onCreate中创建的MediaPlayer?
onDestroy()
。