1.创建Service文件
2.创建raw目录
输入名字后回车(这里我已经创建了就不加示范)
3.复制音乐文件到raw目录
复制音乐文件后右键raw目录粘贴
4.Service代码
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
import android.widget.Toast;
public class MyService extends Service {
MediaPlayer play;
public MyService() {
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
//throw new UnsupportedOperationException("Not yet implemented");
return null;
}
@Override
public void onCreate() {
// 调用父类的onCreate方法,确保服务被正确初始化
super.onCreate();
// 创建一个MediaPlayer实例,并加载存放在R.raw.abc2的音乐资源
play = MediaPlayer.create(this, R.raw.abc2);
// 设置MediaPlayer为循环播放模式
play.setLooping(true);
// 显示一个Toast消息,提示用户服务已被创建
Toast.makeText(this, "创建后台服务>>>>", Toast.LENGTH_SHORT).show();
}
// 重写Service的onStartCommand方法,当服务启动时调用
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// 调用父类的onStartCommand方法,返回系统处理该命令的返回值
super.onStartCommand(intent, flags, startId);
// 开始播放音乐
play.start();
// 显示一个Toast消息,提示用户服务已启动并播放音乐
Toast.makeText(this, "启动后台服务,播放音乐>>>>", Toast.LENGTH_SHORT).show();
// 返回START_STICKY,表示如果服务被系统意外杀死,之后系统会尝试重新创建它
return START_STICKY;
}
// 重写Service的onDestroy方法,当服务被销毁时调用
@Override
public void onDestroy() {
// 释放MediaPlayer资源,避免内存泄漏
play.release();
// 调用父类的onDestroy方法,确保服务被正确销毁
super.onDestroy();
// 显示一个Toast消息,提示用户服务已被销毁
Toast.makeText(this, "销毁后台服务>>>>", Toast.LENGTH_SHORT).show();
}
}
5.主程序调用
定义一个对象
调用对应函数
个人加入if是为了防止重复调用
if(i == 0) {
i+=1;
intent = new Intent(this, MyService.class);
this.startService(intent);
}
5.成功运行
注:侵权,练习删!!