关于service与Activity之间通讯的问题
在service与Activity之间通讯,我现采用这种方式:
在Activity开始bindService的时候,传递一个messenger过去,当service通过网络取得数据后,写回messenger,由Activity中实现的handle来处理,
public Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
}
};
Messenger messenger = new Messenger(mHandler);
Intent intentService = new Intent(this, SocketCommService.class);
intentService.putExtra("MESSENGER", messenger);
_service_bind = bindService(intentService, serviceConnection, Context.BIND_AUTO_CREATE);
service中部分:
@Override
public IBinder onBind(Intent intent) {
Bundle extras = intent.getExtras();
if (extras != null) {
messenger = (Messenger) extras.get("MESSENGER");
Log.e(TAG, "get messenger "+messenger.toString());
}else {
Log.e(TAG, "extras is null! can not get messenger ");
}
Log.i(TAG, "service onBind.");
return serviceBinder;
}
发消息:
Message msg = Message.obtain();
msg.what =type;
if (type==QUOTE) {
msg.obj = parseContent(content);
}
else if (type==ERROR) {
msg.arg2 = -1;
}
//myHandler.sendMessage(msg);
try {
messenger.send(msg);
} catch (RemoteException e) {
Log.w(getClass().getName(), "Exception sending message", e);
e.printStackTrace();
}
现在问题是,如果只连接一次,就没有问题,很正常,但如果第二次bind的时候,messenger就传递不过去了,有哪位知道的,给指点下,多谢