起因
因为要创建一个Tcp的数据传输功能,为了先测试和学习,先创建了一个Handler 的数据传输的demo(测试代码)
错误的demo代码
Handler的信息处理代码
TextView message_text = findViewById(R.id.message_text);
Handler handler = new Handler(Looper.myLooper()){
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
if(msg.obj != null){
message_text.append((String)msg.obj + "\n");
msg.obj = null;
}
}
};
测试发送消息的代码
Button aaa = findViewById(R.id.ceshi_button);
Message message =Message.obtain();
aaa.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
message.obj = "111";
handler.sendMessage(message);
}
});
此时软件在按下第一次按钮的时候可以显示数字111 第二次按下按钮就会闪烁界面,并且重启.文本框清空
解决方法
在发生问题后,第一时间时查询百度等搜索引擎,均无果 android studio 显示的错误代也很乱无法查明原因 随后询问公司内的前辈,告诉我要加上try catch.最终得知问题所在
try {
handler.sendMessage(message);
}catch (Exception e){
e.printStackTrace();
}
再次执行会触发重启的操作得到This message is already in use 的提示 显示的意思是信息已经被使用过
解决方式
Button aaa = findViewById(R.id.ceshi_button);
aaa.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Message message =Message.obtain();
message.obj = "111";
handler.sendMessage(message);
}
});
消息类每次都新建一个,那么消息处理的代码中msg.obj = null; 也可以去除
总结
直接输入1次#,并按下space后,将生成1级标题。 输入2次#,并按下space后,将生成2级标题。 以此类推,我们支持6级标题。有助于使用TOC 语法后生成一个完美的目录。
|