美文网首页
Android---Messenger-IPC通信

Android---Messenger-IPC通信

作者: this_is_for_u | 来源:发表于2017-06-18 15:51 被阅读13次

Messenger的使用

服务端:

public class MessengerService extends Service {
    public static final String TAG = "Messenger";
    public static final int MSG_FROM = 1000;
    //control+o自动重载
    //option+enter自动导包
    private Handler mHander  = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what){
                case MSG_FROM :
                    Log.i(TAG, "from client" + msg.getData().get("msg"));
                    //以下代码使服务端在收到信息时可以给客户端回复信息
                    Messenger mMessenger = msg.replyTo;
                    Message mMessage = Message.obtain(null, MessengerService.MSG_FROM);
                    Bundle bundle = new Bundle();
                    bundle.putString("rep", "reply");
                    mMessage.setData(bundle);
                    try{
                        mMessenger.send(mMessage);
                    }catch (RemoteException e){
                        e.printStackTrace();
                    }
                    break;
            }
        }
    };
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return new Messenger(mHander).getBinder();
    }
}
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true" android:theme="@style/AppTheme">
        <activity android:name=".MainActivity" android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <service android:name=".MessengerService"
                android:label="@string/app_name"
            android:process=":romote"
            />
    </application>

client

Intent intent = new Intent(MainActivity.this, MessengerService.class);
        bindService(intent, mService, Context.BIND_AUTO_CREATE);
@Override
    protected void onDestroy() {
        super.onDestroy();
        unbindService(mService);
    }
//接收服务端回复的信息
    private Handler mHandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what){
                case MessengerService.MSG_FROM:
                    Log.i(MessengerService.TAG, "reply :" + msg.getData().get("rep"));
                    break;
            }
        }
    };
private ServiceConnection mService = new ServiceConnection() {
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            //connect servicer
            mMessenger = new Messenger(service);
            Message mes =  Message.obtain(null, MessengerService.MSG_FROM);
            Bundle bun = new Bundle();
            bun.putString("msg", "hello world");
            mes.setData(bun);
            //make server reply
            mes.replyTo = new Messenger(mHandler);
            try{
                mMessenger.send(mes);
            }catch (RemoteException e){
                e.printStackTrace();
            }
        }

        @Override
        public void onServiceDisconnected(ComponentName name) {

        }
    };

相关文章

  • Android---Messenger-IPC通信

    Messenger的使用 服务端: client

  • http协议相关总结

    1、通信: 通信的三要素 = 通信主体+通信内容+通信方式(响应) 2、通信协议: (1)一般通信:通信双方要完成...

  • 07HTTP

    什么是通信 通信,就是信息的传递和交换。 通信三要素: 通信的主体 通信的内容 通信的方式 什么是通信协议 通信协...

  • VUEX

    为什么要用vuex? 组件通信的类型 父子通信 跨级通信 兄弟通信 路由视图级别通信 通信解决方案 props/$...

  • vue 组件通信方式 ,父子、隔代、兄弟 三类通信,六种方法

    Vue 组件间通信只要指以下 3 类通信:父子组件通信、隔代组件通信、兄弟组件通信,下面分别介绍每种通信方式且会说...

  • vue中的组件通信

    一、组件通信(组件传值) 1.1父子组件通信 1.2子父组件通信 1.3非父子组件通信(兄弟组件通信)

  • “互联网+”2篇

    通信 在通信领域,互联网+通信有了即时通信,几乎人人都在用即时通信 通信(8张)App进行语音、文字甚至视频交流。...

  • 终端与业务实务Day2

    终端与业务实务Day2 Day1讲了通信定义、通信企业. Day2 讲通信终端 Day3 通信业务、通信产品 通信...

  • 操作系统拾遗--进程同步、互斥

    进程通信 进程通信--进程之间的信息交换,如同步、互斥。 进程通信分为: 低级通信方式:同步与互斥 高级通信方式:...

  • 同步和异步

    同步和异步 串行通信有两种传输方式: 1 同步通信 2 异步通信 异步通信是一种很常用的通信方式。异步通信在发送字...

网友评论

      本文标题:Android---Messenger-IPC通信

      本文链接:https://www.haomeiwen.com/subject/jqoiqxtx.html