美文网首页
Android 子线程更新UI

Android 子线程更新UI

作者: jacobcyl | 来源:发表于2015-11-05 14:02 被阅读0次
Can't create handler inside thread that has not called Looper.prepare()

Activity 中创建了一个子线程用以请求HTTP,回调函数中想要更新UI,比如

Toast.make(context, message).show()

出现文章开头的错误,便知道是Looper的问题

一般来说在工作线程中执行耗时任务,当任务完成时,会返回UI。这时有两种方法可以达到目的。
一种是handler.sendMessage。发一个消息,再根据消息,执行相关任务代码。
另一种是handler.post(r)。r是要执行的任务代码。意思就是说r的代码实际是在UI线程执行的。可以写更新UI的代码。(工作线程是不能更新UI的)。
可参考Volley中的做法:

    if(Looper.myLooper() != Looper.getMainLooper()) {
        Handler mainThread = new Handler(Looper.getMainLooper());
        mainThread.post(new Runnable() {
        public void run() {
            Request.this.mEventLog.add(tag, requestTime);
            Request.this.mEventLog.finish(this.toString());
        }
    });
    return;}

相关文章

  • 封装工具类无法使用runOnUiThread解决办法

    由于Android中不能在子线程中更新ui,所以平时在子线程中需要更新ui时可以使用Android提供的RunOn...

  • Android在线程中更新UI和在协程中更新UI

    1、在子线程里面更新UI 我们都知道Android只能在主线程里面对UI更新,所以谷歌提供了很多在子线程里面更新U...

  • Android 真的不能在子线程更新UI吗?

    写过Android 代码的同学应该都听过Android不能在子线程更新UI,只能在主线程即UI线程处理视图。 猜一...

  • Android多线程

    1.沿用java的子线程创建 2.在子线程中不能更新UI,那么在Android中更新UI的方法 runOnUiTh...

  • 子线程更新Ui

    Android子线程更新Ui 1. handler 2.runOnUiThread

  • 【Android】AsyncTask源码分析

    在Android中ui是非线程安全的,更新ui只能在主线程操作,所以我们平时如果遇到子线程更新UI的情况,必须要切...

  • Android Handler探索

    在日常开发中,我们常用Handler来在子线程更新主线程UI,这是因为Android系统不允许我们在子线程更新UI...

  • Android 的线程和线程池

    Android 的线程分为主线程和子线程。 主线程更新 UI 子线程执行耗时操作 AsyncTask封装了线程池和...

  • Handler消息机制

    概念 Android的UI更新是单线程模型,只能在主线程上操作,在子线程上就要通过使用Handler来进行更新UI...

  • Android 跨线程更新 UI

    在 Android 中,视图组件并不是线程安全的。出于线程保护,Android 会拒绝子线程对主线程 UI 的更新...

网友评论

      本文标题:Android 子线程更新UI

      本文链接:https://www.haomeiwen.com/subject/ymqchttx.html