欢迎来到天天文库
浏览记录
ID:38579163
大小:53.50 KB
页数:6页
时间:2019-06-15
《activity与service使用Messenger通信》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Android开发——Activity与service使用Messenger通信Messenger对象可以发送Message,送出的消息放在消息池中,由主线程依次取出,交给和Message关联的Handle处理,而Messenger可以在创建时和Handle对象关联,所以由哪个Messenger发出的Message,就可以由和这个Messenger关联的Handle处理。所以为了实现Activity和Service的通信,我们可以在Activity和Service中分别定义一个Handle类,用来处理和这个Handle相关联的Messenger发出的Mess
2、age。并且用这个类对象去创建Messenger对象。具体例子如下:Activity的代码publicclassSimpleMathServiceDemoextendsActivity{//privateMathServicemathService;privateMessengersMessenger=null;privatebooleanisBound=false;TextViewlabelView;privatefinalMessengeraMessenger=newMessenger(newActivityHandle());classActivity
3、HandleextendsHandler{@OverridepublicvoidhandleMessage(Messagemsg){//TODOAuto-generatedmethodstubBundlebundle=newBundle();bundle=msg.getData();labelView.setText(bundle.getCharSequence("fromservice"));super.handleMessage(msg);}}@OverridepublicvoidonCreate(BundlesavedInstanceState){su
4、per.onCreate(savedInstanceState);setContentView(R.layout.main);labelView=(TextView)findViewById(R.id.label);ButtonbindButton=(Button)findViewById(R.id.bind);ButtonunbindButton=(Button)findViewById(R.id.unbind);ButtoncomputButton=(Button)findViewById(R.id.compute);bindButton.setOnCl
5、ickListener(newView.OnClickListener(){@Override6publicvoidonClick(Viewv){if(!isBound){finalIntentserviceIntent=newIntent(SimpleMathServiceDemo.this,MathService.class);bindService(serviceIntent,mConnection,Context.BIND_AUTO_CREATE);isBound=true;}}});unbindButton.setOnClickListener(n
6、ewView.OnClickListener(){@OverridepublicvoidonClick(Viewv){if(isBound){isBound=false;unbindService(mConnection);}}});computButton.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){if(sMessenger!=null){try{Bundlebundle=newBundle();bundle.putString("fromA
7、ctivity","从Activity发向Service");Messagemsg=Message.obtain();msg.setData(bundle);msg.replyTo=aMessenger;sMessenger.send(msg);}catch(RemoteExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}else{labelView.setText("没有启动服务!");}}6});}privateServiceConnectionmConnection=newSe
8、rviceConnection(){@Overrid
此文档下载收益归作者所有