我想有可能取消加载当前的安卓MediaPlayer网址时,按下后退按钮(onBackPressed),并退出到前一个活动,如果有什么都没有。这一切都发生在Activity加载的时候。onCreate有一个ProgressDialog调用。我想取消此对话框,取消创建/启动MediaPlayer并返回。
如何正确地制作它?
@Override
public void onBackPressed() {
if (pd!=null) {if (mp3Service!=null) mp3Service.reset(getApplicationContext()); pd.onBackPressed();};
super.onBackPressed();
}这不起作用,而且,在一段时间内,屏幕开始变暗并挂起应用程序。
怎么了,也许我必须调用另一个线程?(playSong在单独的线程中启动)。
发布于 2013-07-23 04:10:57
如果您的进度对话框可见,则需要重写其onBackPressed方法来处理事件:
pd = new ProgressDialog(this) {
public void onBackPressed() {
dismiss();
mediaPlayer.stop();
}
};
pd.setTitle("Loading");
pd.setMessage("Please Wait..");
pd.setIndeterminate(true);
pd.setCancelable(false);
pd.show();发布于 2013-07-23 03:59:11
您可以尝试检查对话框中的OnCancelListener,以检测对话框是否已取消。或者,您可以尝试这样的操作
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK)
{
//Do your code here for canceling your service
return true;
}
return super.onKeyDown(keyCode, event);
}创建对话框时,可以添加取消监听程序:
pd.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
// TODO cancel your music service
}
})https://stackoverflow.com/questions/17796215
复制相似问题