Android IPC之 Messager

来源:互联网 发布:防止mysql 注入攻击 编辑:程序博客网 时间:2024/05/22 01:27
public class MessengerService extends Service{    public static final int MESSAGE_FROM_REMOTE=1;    public static final int MESSAGE_REPLY_TO_REMOTE=2;    private static final String TAG="MessengerService";    private Handler mHandler;    private Messenger mMessenger;    public MessengerService() {    }    @Override    public void onCreate() {        super.onCreate();        mHandler=new Handler()        {            @Override            public void handleMessage(Message msg) {                switch (msg.what)                {                    case MESSAGE_FROM_REMOTE:                        String s = msg.getData().getString("msg");                        Log.i(TAG, s);                        Messenger client = msg.replyTo;                        Message reply = Message.obtain(null, MESSAGE_REPLY_TO_REMOTE);                        msg.getData().putString("reply", "reply: " + s);                        reply.setData(msg.getData());                        try                        {                            client.send(reply);                        } catch (RemoteException e)                        {                            e.printStackTrace();                        }                        break;                }            }        };        mMessenger=new Messenger(mHandler);    }    @Override    public IBinder onBind(Intent intent) {        return mMessenger.getBinder();    }}
public class MessengerActivity extends AppCompatActivity{    private static final String TAG="MessengerActivity";    EditText mEditText;    Button mButton;    TextView mTextView;    //本地接收方handler    private Handler mReceiveHandler=new Handler()    {        @Override        public void handleMessage(Message msg) {            switch (msg.what)            {                case MessengerService.MESSAGE_REPLY_TO_REMOTE:                    String s = msg.getData().getString("reply");                    mTextView.setText(s);                    break;            }        }    };    private Messenger mService;    private Messenger mMySelf=new Messenger(mReceiveHandler);    private ServiceConnection mConnection=new ServiceConnection()    {        @Override        public void onServiceConnected(ComponentName componentName, IBinder iBinder) {            mService=new Messenger(iBinder);        }        @Override        public void onServiceDisconnected(ComponentName componentName) {            mService = null;        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_messenger);        mEditText=(EditText)findViewById(R.id.editText);        mButton=(Button)findViewById(R.id.send);        mTextView=(TextView)findViewById(R.id.receive);        mButton.setOnClickListener(new View.OnClickListener()        {            @Override            public void onClick(View view) {                Message message=Message.obtain(null,MessengerService.MESSAGE_FROM_REMOTE);                Bundle bundle=new Bundle();                bundle.putString("msg",mEditText.getText().toString());                message.setData(bundle);                message.replyTo=mMySelf;                try                {                    mService.send(message);                }catch (RemoteException e)                {                    e.printStackTrace();                }            }        });        Intent i=new Intent(this,MessengerService.class);        bindService(i,mConnection, Service.BIND_AUTO_CREATE);    }    @Override    protected void onDestroy() {        super.onDestroy();        unbindService(mConnection);    }}
0 0
原创粉丝点击