Android 基于Message的进程间通信

来源:互联网 发布:hp1010墨盒清零软件 编辑:程序博客网 时间:2024/05/01 13:37

Server端代码

/** * Created by liyan on 16/1/19. */public class MyService extends Service {    private Messenger mMessenger = new Messenger(new Handler() {        @Override        public void handleMessage(Message msgfromClient) {            Message msgToClient = Message.obtain(msgfromClient);            Log.d("收到客户端发来的消息", msgToClient.what + "");            super.handleMessage(msgfromClient);        }    });    @Override    public IBinder onBind(Intent intent) {        return mMessenger.getBinder();    }}
<service                android:name=".MyService"                android:enabled="true"                android:exported="true">            <intent-filter>                <action android:name="com.example.myserver.server"></action>                <category android:name="android.intent.category.DEFAULT" />            </intent-filter>        </service>

Client代码

package com.example.myClient;import android.app.Activity;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.content.ServiceConnection;import android.os.*;import java.util.Timer;import java.util.TimerTask;public class MyActivity extends Activity {    /**     * Called when the activity is first created.     */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        bindService();        send();    }    private void send()    {        new Timer().schedule(new TimerTask() {            @Override            public void run() {                Message message=Message.obtain(null,1);                try {                    if(mService!=null) {                        mService.send(message);                    }                } catch (RemoteException e) {                    e.printStackTrace();                }            }        },500,500);    }    private Messenger mService;    private Messenger messenger=new Messenger(new Handler(){        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);        }    });    private ServiceConnection connection=new ServiceConnection() {        @Override        public void onServiceConnected(ComponentName name, IBinder service) {            mService=new Messenger(service);        }        @Override        public void onServiceDisconnected(ComponentName name) {            mService = null;        }    };    private void bindService()    {        Intent intent = new Intent();        intent.setAction("com.example.myserver.server");        bindService(intent, connection, Context.BIND_AUTO_CREATE);    }    @Override    protected void onDestroy()    {        super.onDestroy();        unbindService(connection);    }}



0 0
原创粉丝点击