1. 通过Handler机制:

private void one() {handler=new Handler(){@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what){case 123:tv.setText(""+msg.obj);//textview刷新break;}}};new Thread(){@Overridepublic void run() {super.run();for (int i=0;i<3;i++){try {sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}Message message=Message.obtain();message.what=123;message.obj="通过Handler机制";handler.sendMessage(message);}}.run();}

主线程中定义Handler,子线程发消息,通知Handler完成UI更新,Handler对象必须定义在主线程中,如果是多个类直接互相调用,就不是很方便,需要传递content对象或通过接口调用。另外Handler机制与Activity生命周期不一致的原因,容易导致内存泄漏,使用时需要注意。

2. runOnUiThread方法

private void two(){new Thread(){@Overridepublic void run() {super.run();for (int i=0;i<3;i++){try {sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}runOnUiThread(new Runnable() {@Overridepublic void run() {tv.setText("通过runOnUiThread方法");}});}}.run();}

用Activity对象的runOnUiThread方法更新,在子线程中通过runOnUiThread()方法更新UI,强烈推荐使用。

3. View.post(Runnable r) :

private void three(){new Thread(){@Overridepublic void run() {super.run();for (int i=0;i<3;i++){try {sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}tv.post(new Runnable() {@Overridepublic void run() {tv.setText("通过View.post(Runnable r) 方法");}});}}.run();}

这种方法更简单,但需要传递要更新的View过去,也可以使用。

4. AsyncTask

private void four(){new MyAsyncTask().execute("通过AsyncTask方法");}
private class MyAsyncTask extends AsyncTask{@Overrideprotected Object doInBackground(Object[] objects) {for (int i=0;i<3;i++){try {sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}return objects[0].toString();}@Overrideprotected void onPostExecute(Object o) {super.onPostExecute(o);tv.setText(o.toString());}}

Android线程间通信的几种实现方式相关推荐

  1. android线程间通信的四种实现方式

    1,通过Handler机制. private void one() {handler=new Handler(){@Overridepublic void handleMessage(Message ...

  2. android 多线程间通信,android实现线程间通信的四种常见方式

    1,通过Handler机制 主线程中定义Handler,子线程发消息,通知Handler完成UI更新,Handler对象必须定义在主线程中,如果是多个类直接互相调用,就不是很方便,需要传递conten ...

  3. 线程间通信的几种实现方式

    线程间通信的几种实现方式 首先,要短信线程间通信的模型有两种:共享内存和消息传递,以下方式都是基本这两种模型来实现的.我们来基本一道面试常见的题目来分析: 题目:有两个线程A.B,A线程向一个集合里面 ...

  4. android线程间通信的几种方法_Android线程间通信机制

    讲解Handler机制的博文很多,我也看了很多,但说实话,在我对Handler几乎不怎么了解的情况下,每一篇文章我都没太看懂,看完之后脑子里还是充满了疑问.究其原因,是因为几乎每一篇文章一上来就开始深 ...

  5. android线程间通信的几种方法_Android 技能图谱学习路线

    Java基础 Java Object类方法 HashMap原理,Hash冲突,并发集合,线程安全集合及实现原理 HashMap 和 HashTable 区别 HashCode 作用,如何重载hashC ...

  6. android线程间通信的几种方法_Android进程间和线程间通信方式

    进程:是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程:是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位 ...

  7. Android线程间通信

    Android线程间通信 前言:内容主要从android线程间通信方式进行入手,首先分析了线程间通信的几种方式,再深入分析线程间通信的机制,主要分析工作线程与工作线程间通信,因为主线程和工作线程间通信 ...

  8. Android线程间通信机制

    Android线程间通信机制 当android应用程序运行时,一个主线程被创建(也称作UI线程),此线程主要负责处理UI相关的事件,由于Android采用UI单线程模型,所以只能在主线程中对UI元素进 ...

  9. 线程间通信的三种方法 (转)

    http://www.cnblogs.com/puxidun/archive/2009/12/06/1618142.html 线程间通信的三种方法 多线程通信的方法主要有以下三种:  1.全局变量 进 ...

最新文章

  1. python可视化来分析全国疫情
  2. Sqlite学习笔记(四)SQLite-WAL原理(转)
  3. RAC数据库恢复到单实例数据库
  4. c 语言链表的另一种实现
  5. Linux的which查找环境变量的文件
  6. linux驱动导出文件属性,将Linux配置文件和设置备份到USB闪存驱动器的方法
  7. 表格在首行,添加空行
  8. 全文检索(LuceneSolr)
  9. 写论文同义替换的软件.v.1.2.3
  10. 用计算机语言说一局情话,计算机中的情话
  11. 基于SpringBoot的网上购物商场管理系统
  12. JD按关键词搜索商品接口调用展示
  13. HTML给SELECT标签赋值
  14. 基于vs实现的socket—udp图片传送实例详解
  15. 极客 android,一款开源的Android极客应用(来一起学习kotlin)
  16. kubernetes---Pause容器---Infra
  17. P315 static关键字
  18. Artifact storage:war exploded: Error during artifact deployment. See server log for details 之一种解决方法
  19. 移轴镜头摄影计算机作业模板,梦寐以求的移轴效果,被我用50mm定焦镜头实现了,简单易学出效果...
  20. HP ELITEDESK 880 G2 HACKINTOSH

热门文章

  1. java redis设置过期时间_Redis的一些核心原理
  2. 水凝胶 静电纺丝_吉林大学:静电纺丝与水凝胶制备技术结合构建高强度光控智能水凝胶驱动器...
  3. mysql proxy 延迟严重_使用MySQL Proxy解决MySQL主从同步延迟
  4. iOS沙盒路径及路径下数据的存储和读取
  5. Android 之 布局训练
  6. Nginx+Tomcat动静分离及Nginx优化(企业案例)
  7. 将 Shiro 作为应用的权限基础
  8. java mp3播放器 ×××面
  9. 大型网站系统架构分析--转
  10. 使用internal(com.android.internal)和hidden(@hide)APIs – Part 5