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】以BaseAdapter做适配器的ListView及其性能优化
  3. android之从SD卡读取数据
  4. 操作Android(安卓)手机通讯录数据库
  5. 【android】getCacheDir()、getFilesDir()、getExternalFilesDir
  6. 在android中获取系统后台运行的进程
  7. android快捷方式的创建与删除
  8. mybatisplus的坑 insert标签insert into select无参数问题的解决
  9. python起点网月票榜字体反爬案例

随机推荐

  1. Android开发中一种两次点击返回键退出应
  2. Android(安卓)Up Navigation的一个小问题
  3. Android(安卓)乱码
  4. Android情景分析之深入解析system_server
  5. ADT的安装和配置
  6. android获取友盟渠道名以及获取applicati
  7. android之uriMathcer详解及使用
  8. ANdroid网易客户端
  9. Android(安卓)资源类型 整理
  10. Kotlin入门配置与简单实战