Class Members in MainActivity
private int mBindFlag; private Messenger mServiceMessenger;
Start service in onCreate()
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent service = new Intent(activityContext, VoiceCommandService.class); activityContext.startService(service); mBindFlag = Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH ? 0 : Context.BIND_ABOVE_CLIENT; }
Binding Service in onStart()
@Override protected void onStart() { super.onStart(); bindService(new Intent(this, VoiceCommandService.class), mServiceConnection, mBindFlag); } @Override protected void onStop() { super.onStop(); if (mServiceMessenger != null) { unbindService(mServiceConnection); mServiceMessenger = null; } }
mServiceConnection member
private final ServiceConnection mServiceConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { if (DEBUG) {Log.d(TAG, "onServiceConnected");} //$NON-NLS-1$ mServiceMessenger = new Messenger(service); Message msg = new Message(); msg.what = VoiceCommandService.MSG_RECOGNIZER_START_LISTENING; try { mServiceMessenger.send(msg); } catch (RemoteException e) { e.printStackTrace(); } } @Override public void onServiceDisconnected(ComponentName name) { if (DEBUG) {Log.d(TAG, "onServiceDisconnected");} //$NON-NLS-1$ mServiceMessenger = null; } }; // mServiceConnection
In the service
@Override public IBinder onBind(Intent intent) { Log.d(TAG, "onBind"); //$NON-NLS-1$ return mServerMessenger.getBinder(); }
Hoan Nguyen Aug 05 '13 at 3:22 2013-08-05 03:22
source share