问题出现的情况是,我在接收线程接收到消息后,需要发送到不同的页面,然后,就直接调用了各个页面的handler来发送了,结果报错,翻译过来也就是这个message已经用了,我解决的办法是给每个页面发送消息的时候都单独创建一个message,用不同的message来分别发送到各个页面中。
然后,由于发送给各个页面的时候,可能有的页面还没有创建,也就发送有问题。这个时候,我解决的办法是定义一个全局的变量,
public static boolean isActivityExist = false;
这个全局变量在activity的onCreate 和onDestory方法中做处理
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.users_list);
isActivityExist = true;
}
public void onDestory(){
super.onDestroy();
isActivityExist = false;
}
我在给这个页面发送消息的时候,先判断这个isActivityExist 变量的值
发送消息处:
if(UsersListActivity.isActivityExist){
Message m = new Message();
m.what = SCConstant.SC_GET_SETTING_LIST_INFO;
m.obj = settingStr;
//更新用户列表和操作历史记录
UsersListActivity.h.sendMessage(m);
}
如果这个变量为true那我就重新生成一个message来发送,否则不做处理。