首先,我启动ActivityB
并点击getUdpMsg
按钮。 Handler
将收到消息并刷新用户界面。
然后,我返回ActivityA
,再次启动ActivityB
,然后点击相同的按钮。但是,UI不会刷新。
但是从日志中成功完成了UI setText。
为什么?
public Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 1) {
receiveMsg = udpSocketReceive.receiveMsg;
Log.d("test", "receive = " + receiveMsg);
// 解析接收到的消息
messageReceive = new MessageReceiveUDP(receiveMsg);
messageReceive.parseUDPRecvMsg();
if (!messageReceive.isValid()) {
Log.e("Error", "The received msg is invalid");
} else {
Log.d("testt", "valid msg");
// 解析的结果显示在UI上
udpreceiveflag = true;
// udpSocketReceive.setLife(false);
setResultOnUI(messageReceive);
(new View(context)).invalidate();
Log.d("debug","after invalidate ip = " +chabanipTextView.getText().toString());
}
}
}
};
答案 0 :(得分:0)
我没有足够的声誉对您的问题发表评论,所以我必须回答一下。
两个问题:
我曾经遇到过同样的问题。它出现在我完成我创建的线程(比如它叫做MyThread)后,MyThread被终止了。所以下次我通过MyThread.run()
“调用”它时,作品在MainThread中运行。
解决方案很简单,确保再次创建MyThread。
要确保创建MyThread,请使用Thread.start()
代替Thread.run()
。
希望这会有所帮助(: