runOnUiThread 和 handler.post()

发布时间:2024年01月16日

runOnUiThread 和 handler.post()

这两个示例中,都是在非主线程(子线程)环境中执行的代码片段。它们都试图将一个任务发送到主线程执行

public class TestMain extends ComponentActivity {

    private Handler handler;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.item_left_menu);
        handler = new Handler();
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Message msg = Message.obtain();
                msg.what = 666; // 消息标识
                handler.sendMessage(msg);
            }
        });

        handler.post(new Runnable() {
            @Override
            public void run() {
                Message msg = Message.obtain();
                msg.what = 666; // 消息标识
                handler.sendMessage(msg);
            }
        });

    }
}

runOnUiThread() 是Activity的方法,它更通用,不依赖于特定的Handler实例,适合在Activity或Fragment上下文中直接更新UI。

handler.post() 是基于Handler机制的方法,适用于已知有与主线程相关联Handler的情况,可以直接利用消息队列进行任务调度。同时,如果需要处理异步结果或者实现更复杂的线程间通信,Handler机制会更加灵活和强大

文章来源:https://blog.csdn.net/qq_33210042/article/details/135613901
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。