从新线程更新TextView

时间:2016-08-14 15:50:50

标签: android

我正在尝试创建一个在Main活动运行时不断更新TextView的线程

我使用过Runnable类,但它不起作用 每次我的应用程序崩溃...

有没有办法做到这一点? 请帮忙

3 个答案:

答案 0 :(得分:2)

您可能需要在活动中使用此功能:

runOnUiThread(new Runnable() {
    @Override
    public void run() {
        textView.setText("something.");
    }
});

或者这个:

textView.post(new Runnable() {
    @Override
    public void run() {
        textView.setText("something.");
    }
});

这两个都可以让你在工作线程中更改UI。

答案 1 :(得分:2)

如果要定期从runnable更新UI,可以启动AsyncTask并从postExecute函数更新TextView。 postExecute总是在UI线程上运行。

您可以在此处找到更多信息:

https://developer.android.com/reference/android/os/AsyncTask.html

答案 2 :(得分:0)

Android不允许您从其他线程更改UI。这是OS设计决策,旨在简化UI处理。您可以在辅助线程上执行任何操作,但如果要与视图和窗口小部件进行交互,则必须通过UI线程执行此操作,如官方文档here中所述。