android - 媒体播放器在广播 Intent 停止后不会停止播放音频文件

标签 android media-player lifecycle kill

我正在使用 Android MediaPlayer 类从正在运行的服务类播放 mp3 文件。如果用户停止查看五个 Activity 中的任何一个,我想停止播放音乐播放器。

我尝试使用此处的代码向保存 MediaPlayer 的服务发送广播 Intent 。这样当服务内部的广播接收器接收到这个 Intent 时,它将调用 player.pause() 方法来停止播放音乐。

但是它不起作用。我在查看其中一项 Activity 时启动了播放器,然后我离开了该应用程序并查看了其他一些应用程序,例如 Android 日历应用程序。音乐不会停止并继续播放。

关于如何解决这个问题有什么想法吗?

   public class Monitor extends Application {

  @Override
   public void onCreate(){
   super.onCreate();

   if(activityVisible==false){
        Intent intent = new Intent();
        intent.setAction("com.sample.test");
        sendBroadcast(intent);
   }

   }


 public static boolean isActivityVisible() {
        return activityVisible;
      }  

      public static void activityResumed() {
        activityVisible = true;
      }

      public static void activityPaused() {
        activityVisible = false;

      }

      private static boolean activityVisible;

   }

这是我在其他 5 个 Activity 中的每一个 Activity ;

  @Override
  protected void onResume() {
    super.onResume();
    Monitior.activityResumed();
  }

  @Override
  protected void onPause() {
     super.onPause();
    Monitor.activityPaused();
  }

最佳答案

Application 类中的

onCreate 在创建每个 Activity 时不会被调用。这是你想要的吗?

因此您的 Monitor 会将 activityVisible 更改为 false,但从您发布的代码来看,此 boolean 没有任何操作。

一个解决方案是创建一个 MonitorActivity 并让您的所有 Activity 扩展它。然后在 MonitorActivityonCreate 中,您将发送广播以启动服务,并在 onPause 中停止服务。是的,这将在 Activity 之间暂停,因此您可以有 3 秒的时间来确定服务是否应该真正停止。

关于android - 媒体播放器在广播 Intent 停止后不会停止播放音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13951275/

相关文章:

java - Android 应用程序上缺少 org/apache/http/client/methods/HttpUriRequest

java - 如何测试Web服务连接

C# Windows 媒体播放器 AxHost 错误 : Failed to create compopnent 'AxHost'

android - ActivityUnitTestCase 生命周期测试

android - 出现对话框时不调用 OnResume

android - GoogleApiClient : Games. API 和 Auth.GOOGLE_SIGN_IN_API 不能一起工作

android - Android 是否跟踪应用程序卸载

android - 如何为媒体播放器制作锁屏通知

android - 从 SD 卡播放随机 mp3 文件

android - 存储 View 和数据的不同方式,除了 Activity