1.因为费时操作要放子线程,更新UI要放UI线程(主线程),所以子线程和主线程通信,通信的话要用到handler这个东西。

这里讲的比较简单,举2个例子说明

2.使用post的是handler ,使用message的是handler2

public class MainActivity extends AppCompatActivity {

    private TextView textView;    private Handler handler = new Handler();

    private Handler handler2=new Handler(){        @Override        public void handleMessage(Message msg) {                switch (msg.what){                    case 1:                        textView.setText(msg.obj.toString());                }        }    };

    Button button;    private static final String TAG = "MainActivity";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);

        textView =findViewById(R.id.textview);

        new Thread(){            @Override            public void run() {                Message message = new Message();                //区分标志                message.what=1;                //传参到ui线程                message.obj=123123;                handler2.sendMessage(message);            }        }.start();

        new Thread(){            @Override            public void run() {                handler.post(new Runnable() {                    @Override                    public void run() {                        textView.setText("fjidfjiijisdf");                    }                });            }        }.start();    }

}

3. 实例化handler在其他线程的时候要下面这样写

 private Handler handler = new Handler(Looper.getMainLooper());

转载于:https://www.cnblogs.com/norm/p/8270486.html

handler更新ui线程的基本用法相关推荐

  1. 子线程中更新UI线程的三个方法

    1.通过handler方式,sendmessage. 多个类间传递比较麻烦,也懒的写... 2.线程中通过runOnUiThread() new Thread() { public void run( ...

  2. android Handler更新UI

    android中经常需要更新界面某个元素的值,但是在主线程中是不可以直接更新主线程的值.这里推荐通过handler机制来更新值. 一Handler的定义: 主要接受子线程发送的数据, 并用此数据配合主 ...

  3. AsyncTask更新UI线程的基本原理

    2019独角兽企业重金招聘Python工程师标准>>> 首先异步任务做的做多的用来更新UI,至于怎样来跟UI线程进行交互的,我们从源码看起.当我们new AsyncTask<P ...

  4. Handler更新子线程数据

    listView = view.findViewById(R.id.listview);//解析网络数据new Thread() {@Overridepublic void run() {super. ...

  5. 在Adapter里子线程更新UI线程

    代码: ((Activity)context).runOnUiThread(new Runnable() {@Overridepublic void run() {holder.mIvPlay.set ...

  6. Android子线程更新UI的方法总结

    消息机制,对于Android开发者来说,应该是非常熟悉.对于处理有着大量交互的场景,采用消息机制,是再好不过了.有些特殊的场景,比如我们都知道,在Android开发中,子线程不能更新UI,而主线程又不 ...

  7. 为什么子线程中不能直接更新UI

    点击上方"dotNET全栈开发","设为星标" 加"星标★",每天11.50,好文必达 全文约4000字,预计阅读时间8分钟 当初有同事就碰 ...

  8. 同步上下文(SynchronizationContext) 和 C#中跨线程更新UI的方法总结

    同步上下文(SynchronizationContext) 和 C#中跨线程更新UI的方法总结 在C#编程环境中,不允许在工作线程中直接对主线程(UI线程)中的控件进行更新操作.因此,稍微复杂一点的程 ...

  9. Android中后台线程如何与UI线程交互

    我想关于这个话题已经有很多前辈讨论过了.今天算是一次学习总结吧. 在android的设计思想中,为了确保用户顺滑的操作体验.一些耗时的任务不能够在UI线程中运行,像访问网络就属于这类任务.因此我们必须 ...

  10. java udp 接收不定长_JAVA UDP通信为什么只能接收一次数据,我想要时刻接收数据,并更新UI,大神们帮我看看程序吧?...

    // 与UDP数据接收线程通信更新UI线程中EditText控件中的内容 receiveHandler = new Handler() { public void handleMessage(Mess ...

最新文章

  1. mysql 苏勇,你不知道的Linux使用技巧~
  2. c++ 截取\r\n问题
  3. 95. Unique Binary Search Trees II
  4. C++中的deque、stack、queue及priority_queue
  5. cypress 的错误消息 - the element has become detached or removed from the dom
  6. vim插件之cscope的安装与配置
  7. mysql配置连接远程_MySql配置远程访问
  8. 人脸检测FDDB评测的详细步骤
  9. JAVA:实现HillCipher希尔密码算法(附完整源码)
  10. LocalSolver快速入门指南(连载四十一) -车辆路径调度问题建模指导
  11. 哈工大2022形式语言与自动机期末
  12. .Net Core开发学习(一) ——Startup 类
  13. 计算机与音乐整合的教学设计,小学音乐课程整合研究《郊游》优秀教学设计
  14. 美元符号 ($) 在 jQuery 中是什么意思?
  15. 字符串包含单引号加上mybitis${}写法引发的plese exclude tableName or statementId异常
  16. b区计算机复试国家线,今年调剂太恐怖 B区考研分数线竟比A区高?
  17. quick-cocos2d-x踩坑记
  18. java.lang.IllegalArgumentException(求解决)
  19. Oracle将收购Sun公司
  20. 【SQL怎么写】查询同一张表中同一个ID对应最新时间的数据记录

热门文章

  1. DSP_Builder设计方法说明_SinWave
  2. Spring boot中的Http压缩配置
  3. python去除\ufeff、\xa0、\u3000
  4. vue中使用cookie记住用户上次选择(本次例子中为下拉框)
  5. 【IDEA】IDEA中部署的项目添加Tomcat自带的一些项目
  6. now.js 0.1.0 发布了
  7. 博客中插入公式——之在线数学公式生成
  8. 基于WinPcap获取设备列表
  9. this与$(this)的区别
  10. 关于 tag import 和 page import