如何使用Android Handler更新UI线程中的TextView?

Dav*_*arl 8 android

我想TextView从Android应用程序中的异步任务更新a .使用a最简单的方法是什么Handler

有一些类似的问题,例如:Android使用Handler更新TextView,但示例很复杂,似乎没有得到解答.

Irv*_*ing 21

有几种方法来更新你的UI和修改View,如TextView从UI线程之外.A Handler只是一种方法.

这是一个允许单个Handler响应各种类型请求的示例.

在类级别定义一个简单的Handler:

private final static int DO_UPDATE_TEXT = 0;
private final static int DO_THAT = 1;
private final Handler myHandler = new Handler() {
    public void handleMessage(Message msg) {
        final int what = msg.what;
        switch(what) {
        case DO_UPDATE_TEXT: doUpdate(); break;
        case DO_THAT: doThat(); break;
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

更新您的一个函数中的UI,现在位于UI线程上:

private void doUpdate() {
    myTextView.setText("I've been updated.");
}
Run Code Online (Sandbox Code Playgroud)

在您的异步任务中,发送消息给Handler.有几种方法可以做到这一点.这可能是最简单的:

myHandler.sendEmptyMessage(DO_UPDATE_TEXT);
Run Code Online (Sandbox Code Playgroud)

  • 那么`Handler类应该是静态的,否则内存泄漏可能会发生警告? (5认同)