重置MediaPlayer onBackPressed

问题描述 投票:0回答:2

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

android android-mediaplayer progressdialog back
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();

0
投票

如果您的对话框已被取消,您可以尝试检查OnCancelListenerin对话框中的检测。或者你可以尝试这样的事情

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 
            }
})
© www.soinside.com 2019 - 2024. All rights reserved.