activity与service 使用Handler Messenger数据传递
生活随笔
收集整理的這篇文章主要介紹了
activity与service 使用Handler Messenger数据传递
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
service 中創建handler
?
/*** 用于接收從客戶端傳遞過來的數據*/ class IncomingHandler extends Handler {@Overridepublic void handleMessage(Message msg) {switch (msg.what) {case 6:Log.i("map", "thanks,Service had receiver message from client!");break;default:super.handleMessage(msg);}} }/*** 創建Messenger并傳入Handler實例對象*/ final Messenger mMessenger = new Messenger(new IncomingHandler()); /*** 當綁定Service時,該方法被調用,將通過mMessenger返回一個實現* IBinder接口的實例對象*/ @Override public IBinder onBind(Intent intent) {Log.i(TAG, "Service is invoke onBind");return mMessenger.getBinder(); }?
activity 中創建Messenger和ServiceConnection
?
?
/*** 與服務端交互的Messenger*/ Messenger mMessenger = null;/** Flag indicating whether we have called bind on the service. */ boolean mBound;/*** 實現與服務端鏈接的對象*/ private ServiceConnection mConnection = new ServiceConnection() {public void onServiceConnected(ComponentName className, IBinder service) {/*** 通過服務端傳遞的IBinder對象,創建相應的Messenger* 通過該Messenger對象與服務端進行交互*/mMessenger = new Messenger(service);mBound = true;}public void onServiceDisconnected(ComponentName className) {// This is called when the connection with the service has been// unexpectedly disconnected -- that is, its process crashed.mMessenger = null;mBound = false;} };開啟service
?
bindService(new Intent(MainActivity.this, ForegroundService.class), mConnection,Context.BIND_AUTO_CREATE);activity 發送數據到service
?
public void sayHello(View v) {if (!mBound) return;// 創建與服務交互的消息實體MessageMessage msg = Message.obtain(null, 6, 0, 0);try {//發送消息mMessenger.send(msg);} catch (RemoteException e) {e.printStackTrace();} }?
總結
以上是生活随笔為你收集整理的activity与service 使用Handler Messenger数据传递的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [100124]红楼梦:林黛玉与北静王【
- 下一篇: 转: vim 的编辑格式设置