我从各种来源获悉,跨活动播放背景音乐需要一项服务。前几天,我找到了这堂课,是为了回答一个更老的问题:
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();
}
}
这种方法是否会使应用程序出现错误或内存泄漏?我在几个设备上进行了测试,而没有遇到问题,这似乎比使用服务要简单得多。
答案 0 :(得分:0)
是的,因为它使用Context,因此只要您的类具有静态字段,该Context就无法被GC收集。
如果应用程序进入后台运行,并且系统破坏了您的上下文,您将有意外的行为。
Service实例也是Context,为什么在删除静态代码时不将这段代码移到Service?