使用单独的课堂在多个活动中播放音乐



我从各种来源了解到,跨活动播放背景音乐需要一项服务。前几天,我找到了这门课,回答了一个老问题:

import android.content.Context;
import android.media.MediaPlayer;
public class AudioPlay {
public static MediaPlayer mediaPlayer;
public static boolean isplayingAudio=false;
public static void playAudio(Context c,int id){
mediaPlayer = MediaPlayer.create(c,id);
if(!mediaPlayer.isPlaying())           
{
isplayingAudio=true;
mediaPlayer.start();             
}          
}
public static void stopAudio(){     
isplayingAudio=false;       
mediaPlayer.stop();
}   
}

这种方法是否会使应用程序出现错误或内存泄漏?我在一些设备上测试了它,没有遇到任何问题,而且它似乎比使用服务简单得多。

是的,因为它使用了一个上下文,使得GC无法对上下文进行排序,因为您的类具有静态字段。

如果应用程序进入后台,系统破坏了您的上下文,您将出现意外行为。

Service实例也是Context,为什么不将这些代码移到Service中,同时删除静态代码呢?

最新更新