<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      安卓筆記俠

      專注安卓開發(fā)

      導(dǎo)航

      Android IPC機(jī)制(二)用Messenger進(jìn)行進(jìn)程間通信

      Messenger可以在不同進(jìn)程中傳遞Message對象,我們在Message中加入我們想要傳的數(shù)據(jù)就可以在進(jìn)程間的進(jìn)行數(shù)據(jù)傳遞了。Messenger是一種輕量級的IPC方案并對AIDL 進(jìn)行了封裝,它實現(xiàn)起來比較容易,下面我們來看看如何實現(xiàn)。

      首先我們先寫服務(wù)端(MessengerService.java),在onBind方法中創(chuàng)建Messenger,關(guān)聯(lián)接收消息的Handler調(diào)用getBinder來獲取Binder對象,在handleMessage方法中接收客戶端發(fā)來的信息。

      服務(wù)端(MessengerService.java): 在handleMessage回調(diào)中收到客戶端信息時,我們調(diào)用Message.replyTo得到客戶端傳過來的Messenger對象,創(chuàng)建消息并通過Messenger發(fā)送給客戶端。

      public class MessengerService extends Service {
          public static final String TAG = "MoonMessenger";
          public static final int MSG_FROMCLIENT=1000;
      
          private Handler mHandler = new Handler() {
              @Override
              public void handleMessage(Message msg) {
                  switch (msg.what) {
                      case MSG_FROMCLIENT:
                          Log.i(TAG,"服務(wù)端收到的信息-------"+msg.getData().get("msg"));
                          //得到客戶端傳來的Messenger對象
                          Messenger mMessenger=msg.replyTo;
                          Message mMessage=Message.obtain(null,MessengerService.MSG_FROMCLIENT);
                          Bundle mBundle=new Bundle();
                          mBundle.putString("rep","這里是服務(wù)端,我們收到信息了");
                          mMessage.setData(mBundle);
                          try {
                              mMessenger.send(mMessage);
                          } catch (RemoteException e) {
                              e.printStackTrace();
                          }
                          break;
                  }
              }
          };
      
          @Override
          public IBinder onBind(Intent intent) {
              Messenger mMessenger=new Messenger(mHandler);
              return mMessenger.getBinder();
          }
      }
      

      客戶端(MessengerActivity.java),客戶端需要創(chuàng)建一個Handler來接收服務(wù)端的信息,前面我們在服務(wù)端調(diào)用Message.replyTo得到客戶端傳過來的Messenger對象,可是客戶端并沒有傳送Messenger對象啊,現(xiàn)在我們加上這段代碼將Messenger對象傳給服務(wù)端,當(dāng)然需要關(guān)聯(lián)我們定義的Handler。

      public class MessengerActivity extends AppCompatActivity {
          private Messenger mMessenger;
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_messenger);
              Intent intent=new Intent(MessengerActivity.this,MessengerService.class);
              bindService(intent,mServiceConnection, Context.BIND_AUTO_CREATE);
          }
          private Handler mHandler = new Handler() {
              @Override
              public void handleMessage(Message msg) {
                  switch (msg.what){
                      case MessengerService.MSG_FROMCLIENT:
                          Log.i(MessengerService.TAG, "客戶端收到的信息-------" + msg.getData().get("rep"));
                          break;
                  }
              }
          };
      
      
      private ServiceConnection mServiceConnection=new ServiceConnection() {
          @Override
          public void onServiceConnected(ComponentName name, IBinder service) {
              mMessenger=new Messenger(service);
              Message mMessage=Message.obtain(null,MessengerService.MSG_FROMCLIENT);
              Bundle mBundle=new Bundle();
              mBundle.putString("msg", "這里是客戶端,收到了嘛服務(wù)端");
              mMessage.setData(mBundle);
              //將Messenger傳遞給服務(wù)端
              mMessage.replyTo=new Messenger(mHandler);
              try {
                  mMessenger.send(mMessage);
              } catch (RemoteException e) {
                  e.printStackTrace();
              }
          }
      
          @Override
          public void onServiceDisconnected(ComponentName name) {
      
          }
      };
          @Override
          protected void onDestroy() {
              super.onDestroy();
              unbindService(mServiceConnection);
      
          }
      }
      

      當(dāng)然別忘了注冊servce時要另開一個進(jìn)程:

      <service android:name=".MessengerService" android:process=":remote"></service>
      

         

      運(yùn)行代碼查看Log,大功告成。 
      這里寫圖片描述

       

      posted on 2018-07-10 10:29  安卓筆記俠  閱讀(356)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 国产精品毛片一区二区| 国产精品日韩av在线播放| 四虎在线成人免费观看| 亚洲va中文字幕无码久久| 亚洲熟妇乱色一区二区三区| 日韩V欧美V中文在线| 61精品人妻一区二区三区| 欧美熟妇乱子伦XX视频| 波多野结衣无内裤护士| 在线看av一区二区三区| 成人无码午夜在线观看| 亚洲另类欧美在线电影| 五月综合激情婷婷六月| 潮喷失禁大喷水av无码| 无码h黄肉动漫在线观看| 日韩在线观看精品亚洲| 最新的国产成人精品2020| 99RE6在线视频精品免费下载| 吉川爱美一区二区三区视频 | 爱啪啪精品一区二区三区| 国产午夜精品久久一二区| 亚洲综合一区二区三区| 亚洲大尺度无码无码专线| 伊人久久大香线蕉aⅴ色| 护士张开腿被奷日出白浆| 浓毛老太交欧美老妇热爱乱| 无人去码一码二码三码区| 免费无码无遮挡裸体视频在线观看| 日韩国产精品中文字幕| 精品久久久久久无码不卡| 国产成人午夜福利精品| 午夜免费啪视频| 在线观看成人永久免费网站| 开心婷婷五月激情综合社区| 亚洲色大成网站www永久一区 | 欧洲一区二区中文字幕| 最新国产精品中文字幕| 久久久久无码国产精品不卡| 实拍女处破www免费看| 成人无码午夜在线观看| 少妇真人直播免费视频|