我正在使用Android MediaPlayer类来从运行服务类播放MP3文件。如果用户停止查看五个活动中的任何一个,我想阻止音乐播放器播放。
我通过在此处使用代码将广播意图发送给拥有MediaPlayer的服务。这样,当服务内部的广播接收器接收到此意图时,它将调用player.pape()方法以阻止音乐播放。
但是它不起作用。我在查看其中一项活动时启动了玩家,然后接下来我离开了应用程序,并查看了其他应用程序,例如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个活动中投入的;
@Override
protected void onResume() {
super.onResume();
Monitior.activityResumed();
}
@Override
protected void onPause() {
super.onPause();
Monitor.activityPaused();
}
Application
类中的onCreate
在创建每个活动时未调用。这是您的意图吗?
因此,您的监视器会将activityVisible
更改为false,但是从代码中,您没有在此boolean
上发挥任何作用。
一种解决方案是创建一个MonitorActivity
并使您的所有活动扩展了这一点。然后,在MonitorActivity
的onCreate
中,您将发送广播以启动服务,并在onPause
中停止服务。是的,这将在活动之间暂停,因此您可以将服务是否应真正停止,可以进行3秒的保险丝。