【问题标题】:Mediaplayer playing even after exiting app?退出应用程序后仍播放 Mediaplayer?
【发布时间】:2016-02-05 16:34:53
【问题描述】:

我有以下代码,它会在服务中运行一段时间后播放一些音频。问题是,退出应用程序后,媒体播放器继续运行;我想在应用程序退出或关闭后停止播放音频。

这是我的音频:

顺便说一下,十和三在最上面声明了:

 MediaPlayer ten;
MediaPlayer three;

我非常感谢任何反馈(正面或负面)!非常感谢您的所有帮助,如果您需要更多代码,请告诉我。

【问题讨论】:

  • 您在退出应用程序之前是否调用过 stopService() 或 stopSelf()?
  • @Aakash 不,我调用 stopService 的唯一地方是在 onFinish() 中。我还应该在哪里称呼它?退出应用程序时是否总是调用某些方法?
  • 根据图片中显示的代码,您似乎正在扩展服务类,您需要在您的活动的 onDestroy() 中停止服务,或者如果您可以创建应用程序类并停止服务该类的 onDestroy() ,它也会有帮助,在这种情况下,您需要在清单中定义应用程序类的名称
  • @Aakash 出于某种原因,即使在停止服务后它仍然运行
  • 你也需要停止媒体播放器

标签: java android audio time media-player


【解决方案1】:

选项1:您可以使用前台服务,以便您的服务仅在应用程序运行时运行。 在此处查看有关前台服务的更多信息。 http://developer.android.com/guide/components/services.html#Foreground

选项 2:通过 Activity 中的 onDestroy 方法停止服务。使用此代码

@Override
    protected void onDestroy() {
        super.onDestroy();
        Intent in = new Intent(YourActivity.this, MyService.class);
        stopService(in);
    }

建议: 此外,您应该始终尝试仅使用一个 MediaPlayer 对象并执行以下操作:

stopPlaying(); // To stop whatever is currently playing
mp2 = MediaPlayer.create(YourActivity.this, R.raw.second);
mp2.start();

在你的情况下,我可能会选择 Option2。 万事如意:)

【讨论】:

  • 嘿,选项二的问题是用户可能会从不同的活动中退出应用程序。我必须把它放在每个活动的 onDestroy 方法中吗?我有 15 项活动...
  • 从上面简单复制粘贴 onDestroy 方法应该不会花费太多时间。或者,也许您可​​以从服务的 onStartCommand() 中 return START_NOT_STICKY。这似乎是一个更好的选择。在这里阅读更多信息:developer.android.com/reference/android/app/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多