我想有可能在按下后退按钮(onBackPressed)时取消当前Android MediaPlayer URL的加载,并退出到上一个活动,好像什么也没有。这一切都发生在Activity加载时。 onCreate有一个ProgressDialog调用。我想取消此对话框,取消创建/启动MediaPlayer并返回。
如何正确使用?
@Override
public void onBackPressed() {
if (pd!=null) {if (mp3Service!=null) mp3Service.reset(getApplicationContext()); pd.onBackPressed();};
super.onBackPressed();
}
这不起作用,而且,在一段时间内屏幕开始变暗并挂起APP。
怎么了,也许我必须打电话给另一个线程? (playSong在单独的线程中启动)。
如果您的进度对话框可见,则需要覆盖其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();
如果您的对话框已被取消,您可以尝试检查OnCancelListener
in对话框中的检测。或者你可以尝试这样的事情
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
}
})