Android使用Messenger实现service与activity交互
service与activity交互的方式有多种,这里说说使用Messenger来实现两者之间的交互。
Service程序:
publicclassMessengerServiceextendsService{ finalMessengermMessenger=newMessenger(newIncomingHandler()); @Override publicIBinderonBind(Intentintent){ returnmMessenger.getBinder(); } @SuppressLint("HandlerLeak") classIncomingHandlerextendsHandler{ @Override publicvoidhandleMessage(Messagemsg){ switch(msg.what){ case0: Toast.makeText(MessengerService.this,"Hellolenve!",Toast.LENGTH_LONG).show(); break; case1: Toast.makeText(MessengerService.this,"Hellolenve!Helloworld!",Toast.LENGTH_LONG).show(); break; default: break; } } } }
MainActivity.javaL:
publicclassMainActivityextendsActivity{ privateMessengermMessenger; privateServiceConnectionconn; privateIntentintent; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); intent=newIntent(this,MessengerService.class); conn=newServiceConnection(){ @Override publicvoidonServiceDisconnected(ComponentNamename){ mMessenger=null; } @Override publicvoidonServiceConnected(ComponentNamename,IBinderservice){ mMessenger=newMessenger(service); } }; } @Override protectedvoidonStart(){ super.onStart(); bindService(intent,conn,BIND_AUTO_CREATE); } @Override protectedvoidonStop(){ super.onStop(); unbindService(conn); } publicvoidonClick(Viewv){ Messagemsg=null; switch(v.getId()){ caseR.id.button1: msg=Message.obtain(null,0,0,0); try{ mMessenger.send(msg); }catch(RemoteExceptione){ e.printStackTrace(); } break; caseR.id.Button01: msg=Message.obtain(null,1,0,0); try{ mMessenger.send(msg); }catch(RemoteExceptione){ e.printStackTrace(); } break; default: break; } } }
原文链接:http://blog.csdn.net/u012702547/article/details/46989417
以上就是本文的全部内容,希望对大家学习Android软件编程有所帮助。