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软件编程有所帮助。
热门推荐
10 小红书平安祝福语简短
11 生日祝福语大全女孩简短
12 收生日红包祝福语 简短
13 领证幽默祝福语简短
14 法考面试祝福语简短
15 老哥出门祝福语简短语
16 送灯祝福语简短独特
17 幼儿狗年祝福语大全简短
18 好听的元旦简短祝福语