我正在使用 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 扩展它。然后在 MonitorActivity
的 onCreate
中,您将发送广播以启动服务,并在 onPause
中停止服务。是的,这将在 Activity 之间暂停,因此您可以有 3 秒的时间来确定服务是否应该真正停止。
关于android - 媒体播放器在广播 Intent 停止后不会停止播放音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13951275/