【发布时间】:2018-08-26 18:52:03
【问题描述】:
我正在尝试在Fragment 中实现一个更改 UI 上的某些内容的线程。因此我需要参考主线程。
根据我的研究,我发现以下代码应该可以解决问题:
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
Toast.makeText(menuActivity, "HELLO", Toast.LENGTH_SHORT).show();
}
});
这只会执行一次,即使Looper 通常应该保持线程处于活动状态。尝试在Handler 中调用Looper.prepare() 将导致RuntimeException,因为每个线程只允许一个Looper。
编辑:我的目标是每秒永久更新一个 TextView。
我还尝试了以下方法:
Thread t = new Thread() {
@Override
public void run() {
menuActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
System.out.println("-----------TEST");
}
});
}
};
t.start();
但这也只会执行一次。
我也读过this article,但我猜我的第一个sn-p 代码只是文章中显示的代码的较短版本。
这些sn-ps代码中我的错误可能在哪里?
这个问题不是重复的,因为我提出了一个完全不同的 sn-p 代码,这是我遇到的问题的基础。此外,Looper 在此线程中进行了更深入的解释。
【问题讨论】:
标签: android multithreading ui-thread