Android Handler不更新textview

时间:2011-09-04 11:28:51

标签: android textview handler

以为我会与大家分享一些奇怪的代码,看看我是否做过任何令人眼花缭乱的错误。 我已经将一个处理程序传递给后台线程来更新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()等。

1 个答案:

答案 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)


        }};