创建子线程创建子线程

更多关于java线程的文章可以查看这两篇

线程1

创建线程的方法

在android中穿件子线程的方案很简单

创建子线程的几种方法
///////第一种///////
class Threadone extends Thread{
@Override
public void run() {} //重写run方法,这个方法就是子线程一旦启用就会执行的方法
} new Threadone().start() //启动子线程 ///////////第二种方式///////////
new Thread(){
@Override
public void run() {}
}.start()



解决子线程调用ui问题

在子线程中是无法调用ui

那么我们就绪要借助

runOnUiThread来操控主线程



runOnUiThread(()->{Toast.makeText(MAIN.this, "", Toast.LENGTH_SHORT).show();});

这样就可以在子线程里面调用了

但是这样还是有局限

例如我们无法向主线程传入子线程产生的变量

如图 如果我们想传递一个变量进去的话他就会提示我们必须用final来修饰 那么我们是无法传递变量的

这个时候我们就需要一个中间人来帮我们想主线程传递这个变量了



Handler对象传递消息

我们创建一个Handler的子类并重写handleMessage方法

这里先介绍一下消息对象 Message message = new Message();

这个message对象其实就是我们向主线程传递变量的载体

message.what = 1234

what属性是个int值 我们可以随便输入 这个值其实就是相当于message的身份或者说是id 因为如果有很多线程向主线程传递消息的时候 我们需要区分每个message的传入身份

message.obj = 任何对象

这个属性就是我们要传递的消息,他是Object类型所以等号的右边可以传入任何对象 String Intger 或者自定义的类对象都可以

Hundler的实例.sendMessage(message);发送消息到Handler的实例里面

那么什么是Hundler

个人理解修饰当Handler被实例化以后,主线程就会无时无刻监听这个对象,一旦有消息传来,就会被主线程调用,达到子线程间接操控主线程的作用或者向主线程传递消息的作用

下面看看代码

在子线程创建message
//创建一个消息对象来和主线程之间传递消息,因为主线程和子线程之间是无法直接通信的
Message message = new Message(); //what是个int数据,这个数字表明我们message对象的编号相当于身份信息
message.what = 0; //obj就是我们要想主线程要传递的消息,他的类型为object类型,所以我们可以传递任意的对象过去,然后再强转回来
message.obj = resmessage; //用Hundler对象来发送消息
myhundler.sendMessage(message);
创建喊Handler对象
private Handler myhundler = new Handler(Looper.myLooper()) {
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
//认证消息身份
if (msg.what == 1234) { //因为是object类型所以需要强转为Sstring
Toast.makeText(uiMainActivity.this, (String) msg.obj, Toast.LENGTH_SHORT).show();
}
}
};

android主线程与子线程的更多相关文章

  1. android 主线程和子线程之间的消息传递

    从主线程发送消息到子线程(准确地说应该是非UI线程)  package com.zhuozhuo; import android.app.Activity; import android.os.Bun ...

  2. Android 主线程和子线程通信问题

        Android 如今不支持View在子线程中创建及调用其方法.假设要实现子线程内容更新之后.将结果及时反馈到主线程中,该怎样出来呢?     能够在主线程中创建Handler来实现. 这样子线 ...

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

    和大家一起探讨Android线程已经有些日子了,谈的最多的就是如何把子线程中的数据发送给主线程进行处理,进行UI界面的更新,为什么要这样,请查阅之前的随笔.本篇我们就来讨论一下关于主线程向子线程如何发 ...

  4. Android 使用handler实现线程间发送消息 (主线程 与 子线程之间)、(子线程 与 子线程之间)

    keyword:Android 使用handler实现线程间发送消息 (主线程 与 子线程之间).(子线程 与 子线程之间) 相信大家平时都有使用到异步线程往主线程(UI线程)发送消息的情况. 本文主 ...

  5. Android笔记(三十二) Android中线程之间的通信(四)主线程给子线程发送消息

    之前的例子都是我们在子线程(WorkerThread)当中处理并发送消息,然后在主线程(UI线程)中获取消息并修改UI,那么可以不可以在由主线程发送消息,子线程接收呢?我们按照之前的思路写一下代码: ...

  6. Handler详解系列(四)——利用Handler在主线程与子线程之间互发消息,handler详解

    MainActivity如下: package cc.c; import android.app.Activity; import android.os.Bundle; import android. ...

  7. Handler具体解释系列(四)——利用Handler在主线程与子线程之间互发消息

    MainActivity例如以下: package cc.c; import android.app.Activity; import android.os.Bundle; import androi ...

  8. (转)C#/.NET主线程与子线程之间的关系

    一般 一个应用程序就对应一个进程,一个进程可有一个或多个线程,而一般有一个主线程.       有的博客上说“至少一个主线程”,这一说法持有怀疑         主线程与子线程之间的关系        ...

  9. C#主线程等待子线程运行结束

    佐左佑右 原文 C#主线程等待子线程运行结束 由于主程序中调用matlab的dll文件进行计算要用较长的时间,主界面会有很长时间的卡顿,造成的用户感受十分不好,因此我想在调用时,将调用放入子线程中,然 ...

  10. Java主线程等待子线程、线程池

    public class TestThread extends Thread { public void run() { System.out.println(this.getName() + &qu ...

随机推荐

  1. .NET 9使用Scalar替代Swagger

    背景 .NET 9刚刚正式发布了,如果你创建一个空的Asp.Net Core 9.0的Web API项目,启动之后,你会惊讶地发现陪伴你多年的Swagger没有了!--这是因为ASP.NET Core ...

  2. VTable-Gantt:功能强大、性能优异的开源甘特图组件

    甘特图的基本概念 在项目管理中,甘特图是一种常用的工具,用于展示项目任务的时间安排和进度. 我们将甘特图拆分成以下几个部分: 左侧任务列表:显示项目的任务列表,通常在图的左侧. 顶部时间轴:显示项目的 ...

  3. PythonDay4Advance

    PythonDay4Advance 函数 引言:比如植物大战僵尸,这个游戏本身也是由代码编写,现在假设有一种豌豆射手,每发射一次 炮弹会执行100行逻辑代码 如果我在程序,每当需要发射炮弹的时候,都要 ...

  4. 一个关于CountDownLatch的并发需求

    需求 A,B,C可并发运行,全部成功才算成功,一个失败全员回滚. 思考 使用CountDownLatch,可以保证三个线程结束后,才进行提交成功状态.但是怎么才能判断某个任务失败了呢? 捕获子线程异常 ...

  5. k8s 实战 3----副本集

    副本集是什么?我们在前文中讲过什么是pod,简单来说pod就是k8s直接操作的基本单位.不了解的同学可以参考前文: k8s 实战 1 ---- 初识 (https://www.cnblogs.com/ ...

  6. 探索使用 ViewContainerRef 的 Angular DOM 操控技术

    探索使用 ViewContainerRef 的 Angular DOM 操控技术 https://indepth.dev/posts/1052/exploring-angular-dom-manipu ...

  7. 企业IT基础资源管理的“帮帮团”上线啦——源启云原生基础设施管理平台

    为助力企业提升基础资源一体化管理和交付效率,以更先进的基础设施管理方式来满足现代企业业务持续扩展和复杂化的需要,中电金信运用基础设施即代码(Infrastructure as Code,简称IaC)技 ...

  8. 评 PowerShell

    近来不得不接触 pwsh,发现竟然设计的这么漂亮. pwsh 的设计出发点:pwsh 的命令都是面向对象的,命令返回的是对象,命令传入的也是对象.对象在命令的管道间传递,从而组合出复杂任务. 这和 l ...

  9. 2024年1月Java项目开发指南1:环境与工具准备

    准备工作 基础能力 开发能力的事咱先不谈,有两个基础技能要学一下. 1.学习使用Markdown编写文档 2.学会使用git拉取代码和提交代码 软件准备 电脑需要安装以下软件: IDEA 2023.2 ...

  10. 证书签名算法OID.1.2.156.10197.1.501

    证书签名算法OID.1.2.156.10197.1.501   证书签名算法OID为1.2.156.10197.1.501表示该证书使用的是基于SM3的SM2签名算法 1.SM2证书数据和RSA算法证 ...