[1]先调用startService 就可以保证服务在后台长期运行
[2]在调用bindservice 目的就是为了调用服务里面的方法
[3]调用unbindservice 解绑服务 目的是为了不打印红色的日志
[4]stopservice 停止服务
实现流程:
A,注册一个服务暴露,把需要暴露方法,放在接口里
public class MusicService extends Service {
//[2]把我们定义的中间人对象返回
@Override
public IBinder onBind(Intent intent) {
return new MyBinder();
}
// 播放音乐的方法
public void playMusic() {
//TODO 等我们讲完多媒体在完成这个案例
System.out.println("音乐播放了");
}
// 暂停音乐的方法
public void pauseMusic() {
System.out.println("音乐暂停了");
}
// 继续播放音乐的方法
public void rePlayMusic() {
System.out.println("音乐继续播放了");
}
//[1]定义中间人的对象 (IBinder类型)
private class MyBinder extends Binder implements Iservice{
@Override
public void callplayMusic() {
//调用播放音乐的方法
playMusic();
}
@Override
public void callpauseMusic() {
//调用暂停音乐的方法
pauseMusic();
}
@Override
public void callrePlayMusic() {
//调用继续播放音乐的方法
rePlayMusic();
}
}
}
B,需要暴露的类:
public interface Iservice {
//把想暴露的方法定义在接口里
public void callplayMusic();
public void callpauseMusic();
public void callrePlayMusic();
}
C,MainActivity中startService 开启服务,然后在bindService 调用服务中的方法
public class MainActivity extends Activity {
private Iservice iservice;//我们定义的中间人对象
private MyConn conn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//[1]调用startservice 保证服务在后台长期运行
Intent intent = new Intent(this,MusicService.class);
startService(intent);
//[2]想点击按钮的时候 调用服务里面的方法 获取我们在服务内部定义的中间人对象
conn = new MyConn();
bindService(intent, conn, BIND_AUTO_CREATE);
}
//监视服务的状态
private class MyConn implements ServiceConnection {
//当连接服务成功后调用
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
//获取我们定义的中间人对象
iservice = (Iservice) service;
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
}
@Override
protected void onDestroy() {
//当Activity销毁的时候 解绑服务
unbindService(conn);
super.onDestroy();
}
// 点击按钮实现音乐的播放
public void click1(View v) {
iservice.callplayMusic();
}
// 点击按钮实现音乐的暂停
public void click2(View v) {
iservice.callpauseMusic();
}
// 点击按钮实现音乐的继续播放
public void click3(View v) {
iservice.callrePlayMusic();
}
}
https://blog.csdn.net/Cricket_7/article/details/84997357 具体使用MediaPlayer 开启音乐Demo
自己的学习android的笔记,希望对你们有帮助,有什么可以相互讨论。