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软件编程有所帮助。