Binder回撥Service中的方法
阿新 • • 發佈:2019-01-05
首先 繫結Servie服務 private KWMusicService mKWService; private void bindMessageRouterService() { Intent intent = new Intent("action"); //action 為要繫結的service的action名字 // for android 5.0 and above if (ExternalAppManager.getExplicitIntent(mContext, intent) != null) { intent = ExternalAppManager.getExplicitIntent(mContext, intent); } mContext.bindService(intent, mConnection, Context.BIND_AUTO_CREATE); } private ServiceConnection mConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { mKWService = ((KWMusicService.LocalBinder) service).getService(); //to do } @Override public void onServiceDisconnected(ComponentName arg0) { rebindMessageRouterService(); } }; //Service 例項物件 mKWService private void rebindMessageRouterService() { if (mKWService == null) { LogUtil.d(TAG, "rebindMessageRouterService"); bindMessageRouterService(); } } service 要在manifest中申明下action名字 eg: <service android:name=".manager.KWMusicService" android:exported="true" > <intent-filter> <action android:name="com.spt.carengine.aiosvoice.kwservice" /> </intent-filter> </service> Service端 返回一個binder @Override public IBinder onBind(Intent intent) { LogUtil.d(TAG, "--onBind--"); return mBinder; } private final IBinder mBinder = new LocalBinder(); public class LocalBinder extends Binder { public KWMusicService getService() { return KWMusicService.this; } }