messenger进程之间的通讯
来源:互联网 发布:七腾软件科技有限公司 编辑:程序博客网 时间:2024/06/05 19:05
服务端。
package com.animee.messenger_server;import android.app.Service;import android.content.Intent;import android.os.Handler;import android.os.IBinder;import android.os.Message;import android.os.Messenger;import android.os.RemoteException;import android.util.Log;public class MyService extends Service { public MyService() { }// 2. 创建信息的处理器对象Handler, 处理客户端返回的信息(Message) Handler handler = new Handler(){ @Override public void handleMessage(Message msg) {// 接受客户端传来的信息 int arg1 = msg.arg1; int arg2 = msg.arg2; Log.i("tag11","服务器端接受到的内容:arg1=="+arg1+",arg2=="+arg2); Messenger clientMessenger = msg.replyTo; Message mess = new Message(); mess.arg1 = 88; mess.arg2 = 66; try { clientMessenger.send(mess); } catch (RemoteException e) { e.printStackTrace(); } } };// 1.创建一个信使对象 Messenger serverMessenger = new Messenger(handler); @Override public IBinder onBind(Intent intent) {// 3.在onBind() 方法中, 返回IBinder对象, messenger.getBinder(); return serverMessenger.getBinder(); }}
主函数不需要有东西。下面是客户端。
package com.animee.messenger_client;import android.content.ComponentName;import android.content.Intent;import android.content.ServiceConnection;import android.os.Handler;import android.os.IBinder;import android.os.Message;import android.os.Messenger;import android.os.RemoteException;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;public class MainActivity extends AppCompatActivity { private ServiceConn conn; private Messenger serverMessenger; private Messenger clientMessenger; Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { int arg1 = msg.arg1; int arg2 = msg.arg2; Log.i("tag12","客户端接受服务器的信息:arg1="+arg1+",arg2=="+arg2); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); conn = new ServiceConn(); clientMessenger = new Messenger(handler); } @Override protected void onStart() { super.onStart();// 1. 绑定服务 Intent intent = new Intent();// 隐士意图跳转 intent.setAction("com.animee.service");// 隐士意图跳转,通过messenger跨进程通信,5.0之后要求必须指定服务器所属的包名 intent.setPackage("com.animee.messenger_server"); bindService(intent,conn,BIND_AUTO_CREATE); } @Override protected void onDestroy() { super.onDestroy(); unbindService(conn); }//3.按钮的点击事件,发送数据到服务器端 public void send(View view) { Message message = Message.obtain(); message.arg1 = 100; message.arg2 = 76;// 将客户端的信使对象,存放到message信息当中 message.replyTo = clientMessenger; try { serverMessenger.send(message); } catch (RemoteException e) { e.printStackTrace(); } } class ServiceConn implements ServiceConnection{ @Override public void onServiceConnected(ComponentName name, IBinder service) {// 2.如果绑定成功后, 在ServiceConnection中的onServiceConnected() 方法中, 得到服务器的信使对象 serverMessenger = new Messenger(service); } @Override public void onServiceDisconnected(ComponentName name) { } }}
阅读全文
0 0
- messenger进程之间的通讯
- 进程之间的通讯
- 进程之间通讯的代码:
- Android进程间通讯之messenger
- Android进程间通讯之messenger
- Android进程间通讯之messenger
- 安卓进程通讯之messenger
- Android:使用Messenger实现进程间通讯
- Android进程间通讯之messenger
- 进程之间通讯的几种方法
- C++/CLI程序进程之间的通讯
- 进程之间通讯的几种方法:
- 进程之间通讯的几种方法:
- 进程之间的四种通讯方式
- Aidl 实现进程之间的通讯
- 进程之间的通讯之共享内存
- 进程之间的通讯之管道
- 安卓进程之间的通讯
- andriodjie——mvp展示拦截器传来的数据跳转购物车
- javascript对上传文件的相关操作
- [简单逻辑学]逻辑学的基本原理——从全称到特称
- H5新增特性
- unity3D基础之渲染管线的设计方法学习路线 讲义源码
- messenger进程之间的通讯
- 父级元素的 font-size:0 解决子代的inline或inlien-block的换行或图片空隙问题
- TCP/IP协议族【第8章地址解析协议APR】
- JavaScript 创建、插入和删除元素
- JAVA构造器
- php 添加 error_log
- Java IO 经典教程 (上) (翻译自jenkov.com)
- html中的用户注册与删除
- 侧拉加XListView分页加载