我刚刚在 android 中测试媒体播放器,我在 onCreate 方法中启动了一个流,并且我有一个调用 finish() 方法的按钮。单击按钮后,即使 Activity 已关闭,我仍然可以听到流正在播放,我想知道这是否是某种泄漏,我必须在调用 finish() 方法之前先停止播放器,或者如果 finish()该方法实际上并没有完全杀死应用程序以释放资源。感谢您的阅读
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button add_function,exit_btn;
add_function = (Button) findViewById(R.id.view_chat);
exit_btn = (Button) findViewById(R.id.exit_btn);
MediaPlayer mp = new MediaPlayer();
String URL_OF_FILE = "http://stream.radiosai.net:8002/";
try {
mp.setDataSource(URL_OF_FILE);
mp.prepare();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mp.start();
exit_btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
finish();
}
});
}// EOF ONCREATE
最佳答案
调用finish()
不会终止应用程序,它只会销毁您正在完成的当前Activity
。虽然我认为完成 Activity 会停止 MediaPlayer
,但在这种情况下您可能应该做的是覆盖 onDestroy()
,并释放您的 MediaPlayer
> 对象存在。例如:
@Override
public void onDestroy() {
if(mediaPlayer != null) mediaPlayer.release();
super.onDestroy();
}
关于java - 媒体播放器和 finish() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12462069/