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

时间:2018-07-27 17:06:19

标签: java android

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

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();
    }   
}

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

1 个答案:

答案 0 :(得分:0)

是的,因为它使用Context,因此只要您的类具有静态字段,该Context就无法被GC收集。

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

Service实例也是Context,为什么在删除静态代码时不将这段代码移到Service?