【Zhaohuaxishi] Messengerはプロセス間通信の記録インスタンスを達成するために

 

サーバ・コード

1  パブリック クラス MessengerServiceは延びサービス{
 2      プライベート 静的 最終的な文字列タグ=「メッセンジャーデモ」3      プライベート 静的 最終 int型 = 0x001 MSG_CLIENT 4      プライベート 静的 最終 int型 msg_serverが作成= 0X002 5      プライベート 静的な 最終文字列KEY_CLIENT =「key_client」6      プライベート 静的な 最終文字列KEY_SERVER =「key_server」7  
8      プライベート 最終メッセンジャーmMessenger = 新しいメッセンジャー(MessageHandlerの());
9  
10      @Nullable
 11      @Override
 12      公共IBinder [OnBind]の(意図意図){
 13          リターンmMessenger.getBinder()。
14      }
 15の 
16      プライベート 静的 クラス MessageHandlerのが延びハンドラ{
 17          @Override
 18          公共 ボイドのhandleMessage(メッセージMSG){
 19              スイッチ(msg.what){
 20                  ケース:MSG_CLIENTを
21                      Log.d(TAG、 "クライアントからMSGを受信:" + 。msg.getData()のgetString(KEY_CLIENT))。
22                      メッセンジャーメッセンジャー= msg.replyTo。
23                      メッセージserverMsg = Message.obtain()。
24                      serverMsg.what = msg_serverが作成。
25                      バンドルのバンドル= 新しいバンドル()。
26                      bundle.putString(KEY_SERVER、 "こんにちはクライアント私は元気です、ありがとうございました!" );
27                      serverMsg.setData(バンドル)。
28                      試し{
 29                         messenger.send(serverMsg)。
30                      } キャッチ(RemoteExceptionを電子){
 31                          e.printStackTrace();
32                      }
 33                      ブレーク34                  デフォルト35                      スーパー.handleMessage(MSG)。
36              }
 37          }
 38      }
 39 }

登録された文書のリスト:

1  パブリック クラス MessengerClientActivityは延びAppCompatActivity {
 2  
3      プライベート 静的 最終的な文字列タグ=「メッセンジャーデモ」4      プライベート 静的 最終 int型 = 0x001 MSG_CLIENT 5      プライベート 静的 最終 int型 msg_serverが作成= 0X002 6      プライベート 静的な 最終文字列KEY_CLIENT =「key_client」7      プライベート 静的な 最終文字列KEY_SERVER =「key_server」8      プライベート 静的 最終的な文字列SERVER_PKGNAME =「com.example.messageserver」9      プライベート 静的な 最終文字列SERVICE_PATH =「com.example.messageserver.MessengerService」10      プライベートメッセンジャーmRemoteMessenger。
11      プライベートメッセンジャーmLocalMessenger = 新しいメッセンジャー(MessengerClientHandler());
12  
13      @Override
 14      保護 ボイドのonCreate(バンドルsavedInstanceState){
 15          スーパー.onCreate(savedInstanceState)。
16          setContentView(R.layout.activity_main)。
17          Log.d(TAG、 "のonCreate" )。
18          bindService()。
19      }
 20  
21      プライベート ボイドbindService(){
 22          意図意図= 新しいテント()。
23          コンポーネント名コンポーネント名= 新しいコンポーネント名(SERVER_PKGNAME、SERVICE_PATH)。
24          intent.setComponent(コンポーネント名)。
25          bindService(意図、mServiceConnection、Context.BIND_AUTO_CREATE)。
26      }
 27  
28      プライベート 静的 クラス MessengerClientHandlerが延びていますハンドラ{
 29          @Override
 30          公共 ボイドのhandleMessage(メッセージmsg){
 31              スイッチ(msg.what){
 32                  ケースmsg_serverが作成:
 33                      Log.d(TAG、 "サーバーからMSGを受信:" + 。msg.getData()のgetString(KEY_SERVER ));
34                      ブレーク;
35                  デフォルト36                      休憩37              }
 38              スーパー.handleMessage(MSG)。
39          }
 40      }
 41  
42      プライベート ServiceConnection mServiceConnection =新しいServiceConnection(){
 43          @Override
 44          公共 ボイドonServiceConnected(コンポーネント名名、IBinderサービス){
 45              mRemoteMessenger = 新しいメッセンジャー(サービス)。
46              メッセージclientMsg = Message.obtain()。
47              clientMsg.what = MSG_CLIENT。
48              バンドルのバンドル= 新しいバンドル()。
49              bundle.putString(KEY_CLIENTは、 "こんにちは、サーバはどのようにしています!?" );
50              clientMsg.setData(バンドル)。
51              clientMsg.replyTo =mLocalMessenger;
52              試み{
 53                  mRemoteMessenger.send(clientMsg)。
54              } キャッチ(RemoteExceptionを電子){
 55                  e.printStackTrace();
56              }
 57          }
 58  
59          @Override
 60          公共 ボイドonServiceDisconnected(コンポーネント名名){
 61  
62          }
 63      }。
64  
65      @Override
 66      保護 ボイドonDestroy(){
 67          スーパー.onDestroy()。
68          unbindService(mServiceConnection)。
69      }
 70 }

 

ログを実行します。

1 15185から15185 / com.example.messageserverのD /メッセンジャー-デモ:こんにちは、サーバー:クライアントからのMSGを受け取ります!お元気ですか ?
2 14269から14269 / com.example.messageclientのD /メッセンジャー-デモ:サーバーからMSGを受け取る:こんにちはクライアント!おかけさまで元気です

 

おすすめ

転載: www.cnblogs.com/andy-songwei/p/11773029.html
おすすめ