1. 创建Service端,用于接收数据

MessengerService.java

packagecom.shieh.android.ipctest.service;importutil.MyConstants;importandroid.app.Service;importandroid.content.Intent;importandroid.os.Handler;importandroid.os.IBinder;importandroid.os.Message;importandroid.os.Messenger;importandroid.util.Log;publicclassMessengerServiceextendsService{privatestaticfinalStringTAG="MessengerService";/***1.创建一个Handler来处理收到的消息**/publicstaticclassMessengerHandlerextendsHandler{@OverridepublicvoidhandleMessage(Messagemsg){//TODOAuto-generatedmethodstubswitch(msg.what){caseMyConstants.MSG_FROM_CLIENT:Log.i(TAG,"receivedfromClient:"+msg.getData().getString("msg"));}super.handleMessage(msg);}}/***2.通过Handler创建一个Messenger对象**/privatefinalMessengermMessenger=newMessenger(newMessengerHandler());/***3.返回底层的Binder对象**/@OverridepublicIBinderonBind(Intentintent){//TODOAuto-generatedmethodstubreturnmMessenger.getBinder();}/***4.在Manifest中注册该服务,让其单独运行在一个进程中**/}


2. 注册MessengerService在独立线程中运行

Manifest.xml中添加:

<serviceandroid:name="com.shieh.android.ipctest.service.MessengerService"android:process=":remote"></service>

3. 服务端发送msg并传递数据

packagecom.shieh.android.ipctest;importcom.shieh.android.ipctest.service.MessengerService;importutil.MyConstants;importandroid.app.Activity;importandroid.content.ComponentName;importandroid.content.Context;importandroid.content.Intent;importandroid.content.ServiceConnection;importandroid.os.Bundle;importandroid.os.IBinder;importandroid.os.Message;importandroid.os.Messenger;importandroid.os.RemoteException;publicclassMainActivityextendsActivity{privatestaticfinalStringTAG="MainActivity";privateMessengermService;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Intentintent=newIntent(this,MessengerService.class);bindService(intent,mConnection,Context.BIND_AUTO_CREATE);}privateServiceConnectionmConnection=newServiceConnection(){@OverridepublicvoidonServiceDisconnected(ComponentNamename){}@OverridepublicvoidonServiceConnected(ComponentNamename,IBinderservice){mService=newMessenger(service);Messagemsg=Message.obtain(null,MyConstants.MSG_FROM_CLIENT);Bundledata=newBundle();data.putString("msg","Hello,ThisisClientsaying");msg.setData(data);try{mService.send(msg);}catch(RemoteExceptione){e.printStackTrace();}}};@OverrideprotectedvoidonDestroy(){unbindService(mConnection);super.onDestroy();}}


更多相关文章

  1. android(7)(写数据权限)
  2. android之从SD卡读取数据
  3. 操作Android 手机通讯录数据库
  4. Android学习 数据存储之_文件存储
  5. Android BaseAdapter基本使用及数据刷新
  6. Android Studio学习:中级控件:使用Intent进行页面之间数据传输
  7. Android 数据存储(数据库、文件、参数)操作实例
  8. Android中子线程网络查看器与Handler消息处理器
  9. android 串口通信,蓝牙通信等需要输出十六进制数据的方法

随机推荐

  1. Android中的内存泄漏模式
  2. android项目打包
  3. Android(安卓)源码编译加速 使用ccache
  4. 从零开始--系统深入学习android(实践-让我
  5. 【Tech】android真机测试——小米3
  6. android 加载外部 dex文件中的类 的源码
  7. Android(安卓)蓝牙低功耗Ble Gatt浅谈
  8. Android自定义View实战---圆盘温度计
  9. [置顶] 解决android某些应用开发某些类无
  10. Android(安卓)App集成支付宝