从实现looper的不同线程创建Toast

时间:2016-07-27 16:06:30

标签: android multithreading

我可以从实现looper或使用HandlerThread的不同线程创建一个toast。使用main looper创建toast或任何ui操作是必须的。

1 个答案:

答案 0 :(得分:0)

正如您所提到的,只能在主线程上调用Toast。如果你想从另一个线程中抛出Toast,你必须将其路由到主线程。

你可以通过以下方式做到:

  1. 使用Activity中的“runOnUiThread”方法:

    activity.runOnUiThread(new Runnable() {
        public void run() {
            Toast.makeText(context, "Hello, world!", Toast.LENGTH_SHORT).show();
        }
    });
    
  2. 使用Toast调用将runnable发布到Handler 在主线程looper上运行:

    private Handler handler = new Handler(Looper.getMainLooper());
        handler.post(new Runnable() {
            public void run() {
                Toast.makeText(context, "Hello, world!", Toast.LENGTH_SHORT).show();
            }
        });