从主线程发布的主线程上启动线程?

时间:2016-09-28 14:11:52

标签: java android multithreading

Handler mainHandler = new Handler(MainActivity.context.getMainLooper());
mainHandler.post(new Runnable() {
    @Override
    public void run() {

        // .. some code                
    }
});

通常我从工作线程启动Runnable,但它可能发生,它是从主线程调用的。你认为它有任何负面影响吗?

3 个答案:

答案 0 :(得分:4)

你没有启动一个线程,你正在将一个Handler附加到主Looper并向它发送一个命令来运行。它将具有与从另一个线程调用时完全相同的效果。

答案 1 :(得分:0)

  1. 处理程序会将runnable发布到它附加的looper上。 Runnable只是一个代码段,它将在looper运行的线程上调用。在这种情况下,这里的looper是MainLooper,并且将在MainThread上调用runnable。
  2. 每当您想要更新UI组件时,都应该将runnable发布到主线程。

    1. 我认为在MainActivity中声明一个静态字段就好了,就像这样#34; MainActivity.context"。

答案 2 :(得分:-1)

当需要向另一个线程发送消息时使用处理程序。 如果在主线程中创建Handler,则可以将消息从后台线程发送到主线程。 更好地使新的内部静态类扩展Hadnler,将WeakReference var声明为Activity。