最近写的一个程序在进入和退出的时候总是莫名其妙的死机,跟了以下总算找到了出错的地方。程序在后台获取网络数据,同时更新主线程显示,
另起的线程根据handler发送数据给主线程
/*send city name*/
Message msg = new Message();
msg.what = MSG_ID_LOCATE;
msg.obj = cityname;
handler.sendMessage(msg);
msg.what = MSG_ID_PEOPLE;
msg.obj = people;
handler.sendMessage(msg);
在这里msg是申请的对象,而sendMessage是异步的,所以当再次使用msg发消息的时候,必须重新申请msg.
/*send city name*/
Message msg = new Message();
msg.what = MSG_ID_LOCATE;
msg.obj = cityname;
handler.sendMessage(msg);
Message msg1 = new Message();
msg1.what = MSG_ID_PEOPLE;
msg1.obj = people;
handler.sendMessage(msg1);
导致这个错误出现的原因是我之前做嵌入式开发用的是我们自己的写的一套GUI的时候,sendMessage都是同步,貌似minigui和ucgui也一样。