Handler向子线程发送数据
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private Button btn = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); btn = findViewById(R.id.btn);
HandlerThread t1 = new HandlerThread();
HandlerThread t2 = new HandlerThread(); t1.start();
t2.start();
try {
/**
* 等待 使子线程内的handler能够初始化完毕,避免 时序错误带来的 mHandler = null
*/
Thread.sleep();
} catch (InterruptedException e) { } t1.mHandler.sendMessage(new Message());
t2.mHandler.sendMessage(new Message());
// t1.stop();
// t2.stop();
} static public class HandlerThread extends Thread{
public Handler mHandler;
@Override
public void run() {
Looper.prepare(); // 子线程无默认的 looper 需手动添加
mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Log.d(TAG, "handleMessage:---------------------------- "+Thread.currentThread().getName());
Log.d(TAG, "Thread ID-----------------------"+Thread.currentThread().getId());
}} ;
Looper.loop(); // 循环
};
}
}
日志输出:
2018-11-08 14:09:44.411 6000-6022/com.example.admin.handlertest D/MainActivity: handleMessage:---------------------------- Thread-2
2018-11-08 14:09:44.411 6000-6023/com.example.admin.handlertest D/MainActivity: handleMessage:---------------------------- Thread-3
2018-11-08 14:09:44.411 6000-6023/com.example.admin.handlertest D/MainActivity: Thread ID-----------------------43152
2018-11-08 14:09:44.411 6000-6022/com.example.admin.handlertest D/MainActivity: Thread ID-----------------------43151
Handler向子线程发送数据的更多相关文章
- Android线程之主线程向子线程发送消息
和大家一起探讨Android线程已经有些日子了,谈的最多的就是如何把子线程中的数据发送给主线程进行处理,进行UI界面的更新,为什么要这样,请查阅之前的随笔.本篇我们就来讨论一下关于主线程向子线程如何发 ...
- android handle详解2 主线程给子线程发送消息
按照android handler详解分析的原理我们可以知道,在主线程中创建handle对象的时候,主线程默认创建了一个loop对象使用threalocal函数将loop对象和主线程绑定. 我们能不能 ...
- 使用Handler在子线程中更新UI
Android规定仅仅能在主线程中更新UI.假设在子线程中更新UI 的话会提演示样例如以下错误:Only the original thread that created a view hierach ...
- Android笔记(三十二) Android中线程之间的通信(四)主线程给子线程发送消息
之前的例子都是我们在子线程(WorkerThread)当中处理并发送消息,然后在主线程(UI线程)中获取消息并修改UI,那么可以不可以在由主线程发送消息,子线程接收呢?我们按照之前的思路写一下代码: ...
- 在C#主线程和子线程将数据传递给对方如何实现
在C#中主线程和子线程怎样实现互相传递数据 老帅 在C#中创建线程Thread时,能够有多种方法,而主线程和子线程之间又怎样实现互相传递数据,每种创建方法传递參数的效果是不同的,逐一看一下: 一.不 ...
- Qt:实现子线程发送信号父线程切换图片
mainwindow.h中代码 #ifndef MAINWINDOW_H#define MAINWINDOW_H #include <QMainWindow>#include " ...
- 19 主线程向子线程发送信息(handler)
package com.fmy.handler; import android.app.Activity; import android.os.Bundle; import android.os.Ha ...
- Android编程心得-Handler与子线程的交互初步
在编写项目的时候,本人发现一个关于线程与Handler很容易犯的错误. 我有两个Activity,一个Activity在后台创建了一个线程并且启动,这个线程对象对应的实体实在另外一个Activity的 ...
- vue 高级属性父组件provide向子组件发送数据,子组件通过inject接收数据
以前父组件向子组件中传值是通过props传值,子组件不能更改父组件中的值,但是可以通过从父组件中获取的值定义给自己的data值,这里父组件可以通过provide向子组件传递自己组件中的data值,子组 ...
随机推荐
- Python Challenge 第二关
第二关和第一关一样,还是一幅图和一行提示.提示说的是: recognize the characters. maybe they are in the book, but MAYBE they are ...
- MongoDB状态查询详解:db.serverStatus()
https://www.2cto.com/database/201501/370191.html
- vs-react-插件
- Ubuntu 16.04安装MongoDB的GUI工具RoboMongo
一.下载: https://robomongo.org/download 离线版本:(链接: https://pan.baidu.com/s/1mirFi56 密码: y3t2) 二.安装: -lin ...
- openlayer3 加载geoserver发布的WFS服务
转自原文 openlayer3加载geoserver发布的WFS服务 openlayers3调用GeoServer发布的wfs 1 参考一 1.1 问题 openlayer3加载WFS存在跨域问题,需 ...
- mysql 安装配置及经常使用操作
作为关系型数据库的一种,mysql因其占用内存小和开源等特性而兴起.以下简介下关于mysql配置和简单的操作. mysql配置 1.安装文件的下载 免安装版下载地址 :http://dev.mysql ...
- cug oj 1479 Treasure Chest Lock (区间dp 思维)
1479: Treasure Chest Lock Time Limit: 1 Sec Memory Limit: 128 MB Submit: 7 Solved: 5 [id=1479" ...
- CMake - boost - 可运行程序 - 静态库
CMake - boost 最后更新日期:2014-04-25by kagula 阅读前提:<CMake入门(二)>.Linux的基本操作 环境: Windows 8.1 64bit英文版 ...
- 关于小程序navigator没有高的情况
传统的web开发者进入小程序的时候,可能有几个映射疑问: div - > view a -> navigator携带参数传值(a标签应该是根据内容来撑高,而navigator就不会根据内 ...
- poj 1651 Multiplication Puzzle【区间DP】
题目链接:http://poj.org/problem? id=1651 题意:初使ans=0,每次消去一个值,位置在pos(pos!=1 && pos !=n) 同一时候ans+=a ...