0

我希望有可能在按下后退按钮(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 在单独的线程中启动)。

4

2 回答 2

1

如果您的进度对话框可见,那么您需要覆盖其 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-22T20:10:57.273 回答
0

您可以尝试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 
            }
})
于 2013-07-22T19:59:10.737 回答