Android线程之主线程向子线程发送消息

news/2024/7/7 19:58:25

  和大家一起探讨Android线程已经有些日子了,谈的最多的就是如何把子线程中的数据发送给主线程进行处理,进行UI界面的更新,为什么要这样,请查阅之前的随笔。本篇我们就来讨论一下关于主线程向子线程如何发送数据,这个用的地方也是非常的多,例如当我们为了优化用户体验,我们会在不影响用户使用的情况下进行后台数据更新,好了废话不多说,开始我们今天的讨论。

public class ThreadActivity extends Activity implements OnClickListener{private Button button1;private Button button2;//主线程中的Handlerprivate Handler firstHandler = new Handler(){public void handleMessage(android.os.Message msg) {System.out.println("first:"+Thread.currentThread());Message message = new Message();SecondHandler.sendMessageDelayed(message, 1000);//每隔1S向子线程发送一个Message对象
        };};//子线程中的Handlerprivate Handler SecondHandler;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.four);init();into();}private void into() {HandlerThread handlerThread = new HandlerThread("handler Thread");handlerThread.start();SecondHandler = new Handler(handlerThread.getLooper()){@Overridepublic void handleMessage(Message msg) {System.out.println("Second:"+Thread.currentThread());Message message = new Message();firstHandler.sendMessageDelayed(message, 1000);//每隔1S向主线程发送一个Message对象
            }};}private void init() {button1 = (Button) findViewById(R.id.button1);button2 = (Button) findViewById(R.id.button2);button1.setOnClickListener(this);button2.setOnClickListener(this);}@Overridepublic void onClick(View arg0) {switch (arg0.getId()) {case R.id.button1:firstHandler.sendEmptyMessage(1);break;case R.id.button2:firstHandler.removeMessages(1);break;default:break;}}}

  布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="send" /><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="stop" /></LinearLayout>

 

转载于:https://www.cnblogs.com/AndroidJotting/p/4466738.html


http://lihuaxi.xjx100.cn/news/272438.html

相关文章

破解Win2008口令-ERD6.0

我们在日常使用计算机的过程中&#xff0c;大多都经历过由于忘记口令从而无法进入系统的遭遇。遇到这种问题该如何处理呢&#xff1f;很多朋友一定想到了形形的口令破解工具&#xff0c;这些工具中名气最大的就是ERD Commander Boot CD。 ERD Commander Boot CD是一张可以启动操…

Python基础实战之函数的参数讲解(三)

●参数可以是任意类型。 ●比如可以是列表。 library[‘python精通’,‘MySQL’,‘数据分析’,‘人工智能’] #形参 def add_book(bookname): library.append(bookname) print(‘图书添加成功&#xff01;’) pass def show_book(books): for book in books: print(bo…

训练数据也外包?这家公司“承包”了不少注释训练数据,原来是这样做的……...

作者 | Lionbridge AI译者 | 天道酬勤 责编 | 徐威龙封图| CSDN│下载于视觉中国出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;在机器学习领域&#xff0c;训练数据准备是最重要且最耗时的任务之一。实际上&#xff0c;许多数据科学家声称数据科学的很…

junit配合catubuter统计单元测试的代码覆盖率

1、视频参考孔浩老师ant视频笔记 对应的build-junit.xml脚步如下所示&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project default"coverage-report"><property name"src.dir" location"src">…

MyBatis动态SQL(认真看看, 以后写SQL就爽多了)

点击上方“方志朋”&#xff0c;选择“设为星标”回复”666“获取新整理的面试文章来源&#xff1a;cnblogs.com/homejim/p/9909657.htmlmybatis最新源码和注释MyBatis 令人喜欢的一大特性就是动态 SQL。在使用 JDBC 的过程中&#xff0c; 根据条件进行 SQL 的拼接是很麻烦且很…

.NET开发人员值得关注的七个开源项目

微软近几年在.NET社区开源项目方面投入了相当多的时间和资源&#xff0c;不禁让原本对峙的开源社区阵营大吃一惊&#xff0c;从微软.NET社区中的反应来看&#xff0c;微软.NET开发阵营对开源工具的依赖正日益增强&#xff0c;本文就为所有.NET开发人员介绍7个应该关注的开源项目…

Python 过程式编程与函数式编程

过程式与函数式是两种截然不同的编程方式和思考方法&#xff0c;下面以求解素数为例做一下对比。 采用过程式编程 def isPrime(n):mid int(pow(n,0.5)1)for i in xrange(2,mid):if n % i 0 : return Falsereturn Trueprimes[] for i in xrange(2,1000):if isPrime(i): prim…

css 商城 两列_如何使用css伪元素实现超实用的图标库(附源码)

今天我们来复盘一下前端中css伪元素的知识以及如何用css伪元素来减轻javascript的压力&#xff0c;做出一些脑洞大开的图形。预备知识伪元素伪元素是一个附加至选择器末的关键词&#xff0c;允许你对被选择元素的特定部分修改样式。伪元素主要有&#xff1a; ::first-letter 第…