以为我会与大家分享一些奇怪的代码,看看我是否做过任何令人眼花缭乱的错误。 我已经将一个处理程序传递给后台线程来更新mainactivity的UI(我知道这不是最好的方法,但这应该是一个快速而肮脏的测试应用程序) 基本上,代码会在textview上附加一条消息,如下所示:
uiHandler.post(new Runnable() {
@Override
public void run() {
Log.i("Text2Server", "Updating log with: " + logput);
logTextView.append(logput);
}
});
每次收到UDP消息时都会发生这种情况,每次都会完美地输出日志,但textview只会在第一条消息上更新,有时根本不会更新。
我认为这与我的textview有关,但我想我会看到是否有人见过类似的东西?
谢谢!
P.S。我已经尝试了基础知识,比如使用setText()而不是append()等。
答案 0 :(得分:0)
它是否在LogCat中输出"Text2Server", "Updating log with: " + logput
?
.post(Runnable r)
此runnable放在队列中,稍后将在附加的线程执行时运行。
也许,处理程序无法访问ui线程,这种假设也可能是错误的。
尝试另一种方式。
实例化处理程序:
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
String logPutFromThread=msg.getData().getString("somekey");
Log.i("Text2Server", "Updating log with: " + logPutFromThread);
logTextView.append(logPutFromThread);
}
};
并从线程的Runnable
执行
Runnable updateActivityUi = new Runnable(){
@Override
public void run() {
//do something before you send the message
Message msg = new Message();
msg.peekData().putString("somekey", logput)
handler.sendMessage(msg)
}};