Service可以说是安卓入门绕不开的槛,Service的作用是完成后台的进程而无需在Activity中显示。Service的调用一般有StartService与boundService两种方法,前者简单,但无法实现Service与Activity的通信,而且如果没有在Activity中结束,Service会一直在后台运行;后者是将Service与Activity绑定,操作繁琐一点,但可以实现两者的通信,且Service随Activity生命周期结束而结束。既然题目说是之一,那肯定就是介绍第一种StartService
首先是新建一个Service文件,然后重OnCreat,onStartCommand,OnDestroy三个方法,从名字就知道他们分别对应Service创建,运行,销毁时的操作
@Override
public void onCreate() {
player1=MediaPlayer.create(this,R.raw.bgm);
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if(!player1.isPlaying()){
player1.start();
state1=player1.isPlaying();
}
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
player1.stop();
state1=player1.isPlaying();
player1.release();
super.onDestroy();
}
}
在OnCreat方法中读取音乐文件,使用的是MediaPlay.creat方法,两个参数第一个上下文对象,第二个音乐文件。
在OnStartCommand方法中,若player1.isplaying=false,即音乐没有在播放,就启用start方法播放,同时返回一个true的状态给state1
在OnDestroy方法中,停止音乐,同时返回一个false的状态给state1,不要忘记释放引用的资源
然后是MainActivity
final Intent intent=new Intent(MainActivity.this,MusicService.class);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(MusicService.state1==false) {
startService(intent);
}
}
});
这里主要是启动Service的方法,其他没什么好说的
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(MusicService.state1=true){
stopService(intent);
}
}
});
同样这里主要是关闭MainActivity的方法,也没什么好说的
效果
按下开始播放,按下停止停止