在非主线程里面操作UI,是非法的

所以有以下两个方法:

1. runOnUiThread

runOnUiThread(new Runnable() {@Overridepublic void run() {}
});

2. 用Handler:就关于Handler来说,有两个方式传递消息给UI。

//用法1: 直接用 new Message()    public void Test1(){
new Thread(()->{Message msg  = new Message();msg.what = 1;msg.arg1 =  101;msg.arg2 = 102;msg.obj  =  "Test1 message obj";handler.sendMessage(msg);}).start();}
    // 用法2(推荐用这个):public void Test2(){new Thread(()->{Message msg = handler.obtainMessage(); //不自己创建,耳塞从MessagePool 去拿
msg.what = 1000;msg.arg1 =  100001;msg.arg2 = 100002;msg.obj  =  "Test2 message obj";handler.sendMessage(msg);}).start();}private Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {System.out.println("msg what:" + msg.what);System.out.println("msg arg1:" + msg.arg1);System.out.println("msg arg2:" + msg.arg2);System.out.println("msg obj:" + msg.obj);

        //此处属于线程安全,可以设置界面操作:如 txtmsg.setText("print from Handler");}};

转载于:https://www.cnblogs.com/bug01/p/11244744.html

UI线程安全 runOnUiThread 和 Handler 一般用法相关推荐

  1. Android UI线程和非UI线程

    UI线程及Android的单线程模型原则 当应用启动,系统会创建一个主线程(main thread). 这个主线程负责向UI组件分发事件(包括绘制事件),也是在这个主线程里,你的应用和Android的 ...

  2. andorid程序UI线程下开启子线程闪退错误解决

    android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original 运行时报 android.view.ViewRo ...

  3. java ui线程_UI线程异常处理方法

    UI线程是非线程安全的,所以,不能在工作线程中操作UI元素. 两个原则 Do not block the UI thread (不要阻塞UI线程) Do not access the Android ...

  4. 5.UI线程和非UI线程的交互方式

    转载请标明出处:  http://blog.csdn.net/yujun411522/article/details/46041637 本文出自:[yujun411522的博客] 这里说的交互方式应该 ...

  5. android 组件 线程,Android UI线程和非UI线程

    UI线程及Android的单线程模型原则 当应用启动,系统会创建一个主线程(main thread). 这个主线程负责向UI组件分发事件(包括绘制事件),也是在这个主线程里,你的应用和Android的 ...

  6. Android 后台线程Thread调用前台线程Handler,延时线程,runOnUiThread使用,Timer延时,定时循环,倒计时

    try {Thread.sleep(1000); } catch (InterruptedException e) {e.printStackTrace(); } //延时3秒 new Handler ...

  7. Android 更新UI的两种方法——handler和runOnUiThread()

    Android 更新UI的两种方法--handler和runOnUiThread() 在Android开发过程中,常需要更新界面的UI.而更新UI是要主线程来更新的,即UI线程更新.如果在主线线程之外 ...

  8. 为什么UI线程中创建Handler可以不传Looper?

    一个APP程序的入口是ActivityThread的main方法,ActivityThread就是我们常说的主线程或UI线程,事实上它并不是一个线程,而是主线程操作的管理者. public stati ...

  9. Android异步机制一:使用Thread+Handler实现非UI线程更新UI界面

    概述:每个Android应用程序都运行在一个dalvik虚拟机进程中,进程开始的时候会启动一个主线程(MainThread),主线程负责处理和ui相关的事件,因此主线程通常又叫UI线程.而由于Andr ...

  10. Android中使用Handler和异步任务(AsyncTack)来为UI线程执行费时操作

    出于性能优化的考虑,Android的UI线程不是线程安全的.这致使我们不能在Android的UI线程中执行一些费时的操作,如下载.刷新等.Android中只允许UI线程对Activity中的UI组件进 ...

最新文章

  1. np.nan is an invalid document, expected byte or unicode string
  2. 《Spring Cloud微服务实战》100本赠书获得名单
  3. 【原】让H5页面适配移动设备全家 - 设计师篇 - PPT
  4. 【Android 逆向】Android 进程注入工具开发 ( 总结 | 源码编译 | 逆向环境搭建使用 | 使用进程注入工具进行逆向操作 ) ★★★
  5. 读取文件:TypeError: an integer is required (got type str)
  6. MarkDown学习之Typora的使用
  7. node npm nrm nvm gnvm 相爱相杀
  8. Android音频处理 PCM格式
  9. 网易新闻 时事新闻抓取链接
  10. python小球弹弹弹_python实现小球弹跳效果
  11. [转]VSS中创建分支
  12. 关于微信中的localStorage及使用cookie的解决方案
  13. java简历中的项目经验怎么写_java软件工程师简历中项目经验怎么写?
  14. 敏捷.高效通过ACP.随笔
  15. 《UnityAPI.Random随机数》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Random+Range+seed+onUnitSphere+立钻哥哥++OK++)
  16. 中兴2618交换机的STP环网基本操作
  17. Xmind8 思维导图 使用教程
  18. 我本沉默不显示服务器列表,独家发布辉煌沉默全新我本沉默2003服务端
  19. chatgpt国内能用吗?详细解读gpt的使用方法
  20. 孤岛危机2通关,看到这篇剧情,太精彩忍不住转了--孤岛危机2详细剧情。

热门文章

  1. ap 目标检测算法map_目标检测算法介绍
  2. 天梯赛L2-10:排座位
  3. new函数的使用方法
  4. C程序设计--结构体+单向链表
  5. jmeter录制脚本_jmeter(二)Badboy录制脚本
  6. 高德地图定位误差_导航定位错误致拥堵,四川景区建议别用高德地图 高德回应...
  7. android文件存储的有点,快速理解Android文件存储路径
  8. android 获取录音时长_Android中集成FFmpeg ③执行进度
  9. python交通调查数据处理_python数据分析--关于时间类型数据处理的一种方法
  10. 风控中英文术语手册(银行_消费金融信贷业务)_v4