在另一个类的 UI 线程上运行

Ben*_*bat 5 java android android-studio

我搜索了一个解决方案,但找不到,所以我会在这里问:

我正在尝试在 mainActivity 中使用 setText 命令,直到现在我使用过:

 MainActivity.this.runOnUiThread(new Runnable() {
                 public void run() {
                     textViewPrograss.setText(finalI + "");
                 }
             });
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试做同样的事情,但是来自另一个类,所以我不能使用:MainActivity.this。

我试图使用我在另一个问题上找到的代码但没有成功,这是代码:

new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
    Log.d("UI thread", "I am the UI thread");
}});
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Kel*_*dos 5

这是(您问题中的第二个代码示例)是从随机位置访问 UI 线程的正确方法,尽管您应该始终尝试使用上下文来执行此操作:-)

new Handler(Looper.getMainLooper()).post(
    new Runnable() {
        @Override
        public void run() {
            Log.d("UI thread", "I am the UI thread");
    }});
Run Code Online (Sandbox Code Playgroud)

它确实有效,如果没有,请检查您的调试器中是否启用了调试日志 ^^


小智 4

你可以使用这个片段

textView.post(new Runnable() {
        @Override
        public void run() {
            textView.setText("Text");
        }
});
Run Code Online (Sandbox Code Playgroud)