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();}
新聞熱點
疑難解答