MainActivity 类:package com.itheima74.test;import android.content.ComponentName;import android.content.Intent;import android.content.ServiceConnection;import android.os.Bundle;import android.os.IBinder;import android.support.v7.app.AppCompatActivity;import android.view.View;/** * 混合方式开启服务,百度音乐盒框架的搭建 */public class MainActivity extends AppCompatActivity { PRivate MyConn mConn; private Iservice mIservice;// 中间人对象,获取这个对象后可以调用其方法(服务中的方法) @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.再bindService()获取中间人对象以调用服务中的方法 mConn = new MyConn(); bindService(intent,mConn,BIND_AUTO_CREATE); } private class MyConn implements ServiceConnection { @Override public void onServiceConnected(ComponentName name, IBinder service) { mIservice = (Iservice) service; } @Override public void onServiceDisconnected(ComponentName name) { } } // 点击按钮,播放音乐 public void playMusic(View view) { mIservice.callPlayMusic(); } // 点击按钮,暂停音乐 public void pauseMusic(View view) { mIservice.callPauseMusic(); } // 点击按钮,重新播放音乐 public void replayMusic(View view) { mIservice.callReplayMusic(); } @Override protected void onDestroy() { super.onDestroy(); // 取消绑定服务 unbindService(mConn); }}MusicService 类:package com.itheima74.test;import android.app.Service;import android.content.Intent;import android.os.Binder;import android.os.IBinder;import android.support.annotation.Nullable;/** * Created by My on 2017/2/23. */public class MusicService extends Service { @Nullable @Override public IBinder onBind(Intent intent) { return new MyBinder(); } @Override public void onCreate() { super.onCreate(); } @Override public void onDestroy() { super.onDestroy(); } // 播放音乐的方法 public void playMusic(){ System.out.println("音乐播放了"); } // 暂停音乐的方法 public void pauseMusic(){ System.out.println("音乐暂停了"); } // 重新播放音乐的方法 public void replayMusic(){ System.out.println("音乐重新播放了"); } // 定义中间人对象 private class MyBinder extends Binder implements Iservice{ @Override public void callPlayMusic() { playMusic(); } @Override public void callPauseMusic() { pauseMusic(); } @Override public void callReplayMusic() { replayMusic(); } }}Iservice 接口:package com.itheima74.test;/** * 定义一个接口,将想暴露的方法暴露出去 * Created by My on 2017/2/23. */public interface Iservice { void callPlayMusic(); void callPauseMusic(); void callReplayMusic();}
新闻热点
疑难解答