【发布时间】:2015-02-03 00:47:20
【问题描述】:
当应用程序进入后台时,我使用以下代码停止在应用程序后台循环播放的音乐,它可以在模拟器上运行,而不是在手机上运行。即使我退出应用程序时声音仍在播放,有人有解决方案吗?我会很感激的
@Override
protected void onPause() {
super.onPause();
Context context = getApplicationContext();
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> taskInfo = am.getRunningTasks(1);
if (!taskInfo.isEmpty()) {
ComponentName topActivity = taskInfo.get(0).topActivity;
if (!topActivity.getPackageName().equals(context.getPackageName())) {
MusicManager.getInstance().stopMusic();
Toast.makeText(MainActivity.this, "YOU LEFT YOUR APP", Toast.LENGTH_SHORT).show();
}
}
更新:
音乐管理器:
public class MusicManager {
MediaPlayer mp = null;
private static MusicManager refrence = null;
public static MusicManager getInstance(){
if(refrence==null){
refrence = new MusicManager();
}
return refrence;
}
public void initializeMediaPlayer(Context context, int musicID){
mp = MediaPlayer.create(context, R.raw.rock);
mp.setLooping(true);
try {
mp.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void playMusic(){
mp.start();
}
public void stopMusic(){
if (mp != null) {
mp.stop();
mp.release();
}
}
}
主要:
MusicManager.getInstance().initializeMediaPlayer(this, R.raw.rock);
MusicManager.getInstance().playMusic();
【问题讨论】:
-
你看到吐司了吗?
-
不,我没有,但是安装过程中确实出现了任务权限,我正在 Galaxy S4 上测试
-
你是如何开始播放音乐的?
-
if (!taskInfo.isEmpty()) ,这是评估为真吗?
标签: android performance android-activity android-mediaplayer