Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在Looper的帮助下访问/发布消息到UI线程_Android_Multithreading - Fatal编程技术网

Android 在Looper的帮助下访问/发布消息到UI线程

Android 在Looper的帮助下访问/发布消息到UI线程,android,multithreading,Android,Multithreading,如何从线程将消息发布到主UI循环器? 我正在开发一个独立的助手类,它应该显示一个窗口 错误的解决方案是通过构造传递视图,然后使用View.post(), 但我正在寻找更好的解决方案 我原以为这会奏效,但我得到了常见的“ui线程上没有”异常 public class Example { private Context context; public Example(Context context) { this.context = context; }

如何从线程将消息发布到主UI循环器? 我正在开发一个独立的助手类,它应该显示一个窗口

错误的解决方案是通过构造传递视图,然后使用View.post(), 但我正在寻找更好的解决方案

我原以为这会奏效,但我得到了常见的“ui线程上没有”异常

public class Example {

    private Context context;

    public Example(Context context) {
        this.context = context;
    }

    public void build() {

    }

    public void show() {
        Handler handler = new Handler(Looper.getMainLooper());
        handler.post(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(context, "test", Toast.LENGTH_LONG);
            }
        }); 
    }

}

只需传递上下文并使用runonUiThread方法,如下所示

((Activity)contextObj).runOnUiThread(new Runnable() {

                public void run() {
                     Toast.makeText(context, "test", Toast.LENGTH_LONG).show();

                }
            });