当前位置: 首页 > news >正文

07 |「异步任务」

前言

实践是最好的学习方式,技术也如此。

文章目录

    • 前言
    • 一、进程与线程
      • 1、进程
      • 2、线程
    • 二、实现

一、进程与线程

1、进程

  • 进程(Process)是操作系统分配资源的基本单位,它是一个执行中的程序实例;
  • 每个进程都有自己独立的内存空间,不同进程的内存是相互独立的;
  • 在Android系统中,每个应用都会以一个新的进程运行,系统会自动帮我们管理这些进程;
  • 默认情况下,Android系统会为每个App分配一个进程。这个默认进程里可以包含多个Activity);
  • 当在这个进程内启动一个新的Activity时,是直接在该进程create一个Activity实例,不会创建新进程;
  • 多个Activity会共享该应用进程的资源和内存空间;
  • 单纯启动新Activity并不会造成进程切换,对系统资源影响较小

2、线程

* 线程就是让==一个程序==有能力==同时完成多件事情==;
  • 线程是正在运行的程序中的一条独立的执行路径;
  • 主线程
    • 当 Android 程序启动时,系统会创建一个主线程,也称为 UI 线程;
    • UI 线程是应用程序与 Android UI 工具包中的组件交互的方式(在这个线程中可以更新UI,处理用户输入事件等。UI组件像Activity、View都是在UI线程中初始化和创建的。);
    • UI线程负责处理用户界面的创建、更新和响应用户交互事件,确保应用的用户界面保持流畅、响应迅速,并提供良好的用户体验
    • UI 线程只能处理和界面相关的工作,比如绘制界面,处理点击事件等,区分UI线程和工作线程,就是让耗时操作不阻塞界面,以保证应用的流畅性和用户体验;
    • 后台(工作)线程是除主线程或 UI 线程之外的任何线程;
    • AsyncTask:
      • 来简化这种需要后台工作的场景;
      • 可以把AsyncTask看成一个工人,我们在主线程中告诉它需要做什么工作,它会自己另开一个线程(后台线程)去工作。工作完成后它再回到主线程,通过回调方法将结果返回给我们。这样下来,我们的主线程(UI线程)就可以专注于更新界面,不会被阻塞。而AsyncTask也封装了线程管理和线程间通信的复杂性,我们只需要告诉它做什么工作就可以了;
      • AsyncTask 通过异步线程可以避免阻塞,回调机制又可以获取结果;

二、实现

  • 回调:至于回调的概念,它表示一种函数或方法,当特定事件发生时就会被执行。回调不会主动调用,而是在满足条件时由别处调用以完成响应。在Android中,回调机制很常见,例如点击事件的onClick()就是一个回调方法。

AsyncTask通过线程间的回调,很好地结合了后台工作与UI更新,极大地方便了程序逻辑的管理。

  • TextView、Button;
  • 用户单击 Button 时,应用程序会休眠一段随机时间,然后在唤醒时在 TextView 中显示一条消息;
// 第一个泛型参数String: 表示异步任务输入参数的类型:String
// 第二个泛型参数Integer: 表示后台任务执行进度的类型:Integer
// 第三个泛型参数Bitmap: 表示异步任务最终返回结果的类型:// 知识点:<T>表示类型参数T,用于在定义Box类时传入实际的类型
public class MyAsyncTask extends AsyncTask <String, Integer, Bitmap>{}

您的应用现在有一个在后台执行工作的 AsyncTask 类,现在可以为“启动任务”按钮实现 onClick 方法来触发后台任务

相关文章:

07 |「异步任务」

前言 实践是最好的学习方式&#xff0c;技术也如此。 文章目录 前言一、进程与线程1、进程2、线程 二、实现 一、进程与线程 1、进程 进程(Process)是操作系统分配资源的基本单位,它是一个执行中的程序实例&#xff1b;每个进程都有自己独立的内存空间,不同进程的内存是相互独…...

LoRaWan网关设计之入门指南

快速开始 以下是在目标平台本身上构建和运行 LoRaWan网关 的三步快速入门指南。 第 1 步:克隆 网关源码库 git clone https://github.com/lorabasics/basicstation.git...

互联网电影购票选座后台管理系统源码开发

搭建一个互联网电影购票选座后台管理系统需要进行以下步骤&#xff1a; 1. 需求分析&#xff1a;首先要明确系统的功能和需求&#xff0c;包括电影列表管理、场次管理、座位管理、订单管理等。 2. 技术选型&#xff1a;选择适合的技术栈进行开发&#xff0c;包括后端开发语言…...

[ K8S ] yaml文件讲解

目录 查看 api 资源版本标签写一个yaml文件demo创建资源对象查看创建的pod资源创建service服务对外提供访问并测试//创建资源对象查看创建的service写yaml太累怎么办&#xff1f; Kubernetes 支持 YAML 和 JSON 格式管理资源对象 JSON 格式&#xff1a;主要用于 api 接口之间消…...

【《深入浅出计算机网络》学习笔记】第1章 概述

内容来自b站湖科大教书匠《深入浅出计算机网络》视频和《深入浅出计算机网络》书籍 目录 1.1 信息时代的计算机网络 1.1.1 计算机网络的各类应用 1.1.2 计算机网络带来的负面问题 1.2 因特网概述 1.2.1 网络、互联网与因特网的区别与关系 1.2.1.1 网络 1.2.1.2 互联网 …...

二、Linux中权限、shell命令及运行原理

shell命令及运行原理 我们使用Linux时&#xff0c;并不是直接访问操作系统&#xff0c;为什么不是直接访问操作系统呢&#xff1f; 如果用户直接访问操作系统&#xff0c;不仅使用难度大&#xff0c;而且不安全&#xff0c;容易把系统文件损坏。 那么我们通常是如何访问操作系统…...

【RabbitMQ上手——单实例安装5种简单模式实现通讯过程】

【RabbitMQ入门-单实例安装&5种简单模式实现通讯过程】 一、环境说明二、安装RabbitMQ三、用户权限及Virtual Host设置四、5种简单模式实现通讯过程的实现五、小结 一、环境说明 安装环境&#xff1a;虚拟机VMWare Centos7.6 Maven3.6.3 JDK1.8RabbitMQ版本&#xff1a;…...

python+pytest接口自动化之HTTP协议基础

HTTP协议简介 HTTP 即 HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09;&#xff0c;是互联网上应用最为广泛的一种网络协议。所有的 WWW 文件都必须遵守这个标准。 设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。HTTP 协议在 OSI 模型…...

【技巧】如何保护PowerPoint不被改动?

PPT&#xff0c;也就是PowerPoint&#xff0c;是很多小伙伴在工作生活中经常用到的图形演示文稿软件。 做好PPT后&#xff0c;担心自己不小心改动了或者不想他人随意更改&#xff0c;我们可以如何保护PPT呢&#xff1f;下面小编就来分享两个常用的方法&#xff1a; 1. 将PPT改…...

【APITable】教程:创建并运行一个自建小程序

1.进入APITable&#xff0c;在想要创建小程序的看板页面点击右上角的【小程序】&#xff0c;进入小程序编辑页面。 2.创建一个新的小程序区。 点击【 添加小程序】 点击创建小程序&#xff0c;选择模板&#xff0c;输入名字。 3.确定后进入小程序部署引导页面。 4.打开Xshell 7…...

使用MyBatis操作数据库

hi,大家好,今天为大家带来MyBatis操作数据库的知识 文章目录 &#x1f437;1.根据MyBatis操作数据库&#x1f9ca;1.1查询操作&#x1f347;1.1.1无参查询&#x1f347;1.1.2有参查询 &#x1f9ca;1.2删除操作&#x1f9ca;1.3修改操作&#x1f9ca;1.4增加操作&#x1f9ca;…...

SSM(Vue3+ElementPlus+Axios+SSM前后端分离)--功能实现[五]

文章目录 SSM--功能实现实现功能09-带条件查询分页显示列表需求分析/图解思路分析代码实现测试分页条件查询带条件分页查询显示效果 实现功能10-添加家居表单前端校验需求分析/图解思路分析代码实现完成测试测试页面效果 实现功能11-添加家居表单后端校验需求分析/图解思路分析…...

Qt应用程序窗体最大化失效问题的解决方法

记录一个在Qt开发过程中遇到的问题&#xff1a; 【问题描述】在showEvent中调用showMaximized()&#xff0c;应用程序窗体仍然无法最大化。 【定位分析】在Qt应用程序中&#xff0c;如果窗体最大化失效&#xff0c;可能是因为在窗体的showEvent事件中使用了showMaximized()方…...

python怎么判断变量的数据类型

在编程的世界里&#xff0c;了解各种数据类型是非常重要的。在Python中&#xff0c;有着丰富的数据类型用于存储和处理不同类型的数据。掌握这些数据类型的定义和作用&#xff0c;我们能够更好地在程序中管理和操作数据&#xff0c;提高代码的效率和可读性。 Python中常见的数据…...

FastAPI 构建 API 高性能的 web 框架(二)

上一篇 FastAPI 构建 API 高性能的 web 框架&#xff08;一&#xff09;是把LLM模型使用Fastapi的一些例子&#xff0c;本篇简单来看一下FastAPI的一些细节。 有中文官方文档&#xff1a;fastapi中文文档 假如你想将应用程序部署到生产环境&#xff0c;你可能要执行以下操作&a…...

如何实现 Java SpringBoot 自动验证入参数据的有效性

Java SpringBoot 通过javax.validation.constraints下的注解&#xff0c;实现入参数据自动验证 如果碰到 NotEmpty 否则不生效&#xff0c;注意看下 RequestBody 前面是否加上了Valid Validation常用注解汇总 Constraint详细信息Null被注释的元素必须为 nullNotNull被注释的元…...

golang学习随记

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 go学习快捷键及快速生成代码片段go基础循环流程控制关键字切片&#xff0c;拷贝函数闭包 defer语句格式化输出go语言随机数rand.seed() 包管理并发编程goroutinecha…...

【PCL-6】PCL基于凹凸型的分割算法(LCCP)

凹凸型分割算法适用于颜色类似、棱角分明的物体场景分割。LCCP方法不依赖点云颜色&#xff0c;只使用空间信息和法线信息。 算法流程&#xff1a; 1、基于超体聚类的过分割&#xff1b; 2、在超体聚类的基础上再聚类。 算法思路&#xff1a; 1、基于CC和SC判断凹凸性&…...

多进程并发服务器

文章目录 思路问题多进程并发回环服务器代码客户端代码 思路 每当一个客户端连接服务器后&#xff0c;创建一个子进程负责与该客户端通信&#xff0c;客户端断开连接之后&#xff0c;服务器回收子进程资源。 问题 问题1&#xff1a;父进程阻塞在等待连接(accept())处&#xf…...

2021秋招总结

2021 秋招总结 作为星球第一批准备秋招的人&#xff0c;经过这几个月的面试之后&#xff0c;感觉也算是有一些小小的经验了吧&#xff0c;就做一个简单的记录&#xff0c;希望能够为星球中准备秋招的伙伴们提供一些参考吧~ 序 4月初加入星球&#xff0c;到9月底&#xff0c;一…...

5分钟精通抖音批量下载神器:douyin-downloader完整使用指南

5分钟精通抖音批量下载神器&#xff1a;douyin-downloader完整使用指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback …...

痞子衡嵌入式:turbo-spiboot - 一种基于MCUBoot协议的二级SPI加载APP提速方案必

前面我们对 Kafka 的整体架构和一些关键的概念有了一个基本的认知&#xff0c;本文主要介绍 Kafka 的一些配置参数。掌握这些参数的作用对我们的运维和调优工作还是非常有帮助的。 写在前面 Kafka 作为一个成熟的事件流平台&#xff0c;有非常多的配置参数。详细的参数列表可以…...

实测Qwen3智能字幕生成效果:高精度时间戳对齐,剪辑无缝衔接

实测Qwen3智能字幕生成效果&#xff1a;高精度时间戳对齐&#xff0c;剪辑无缝衔接 1. 效果展示与核心价值 1.1 为什么选择Qwen3字幕生成工具 在视频制作过程中&#xff0c;字幕时间轴对齐是最耗时的工作之一。传统手动对齐方式不仅效率低下&#xff0c;而且很难达到毫秒级精…...

C编码小技巧(代码注释,日志开启/关闭,#pragma once)

文章目录 1、代码注释2、功能模块 日志开启和关闭3、防止.h重复定义 1、代码注释 代码注释 除了//&#xff0c;/**/&#xff0c;还有 条件编译 &#xff1a; #if 0#endif2、功能模块 日志开启和关闭 #if 0 #define APP_ERR(format,...) do { \printf("[keys_task] erro…...

Phi-4-mini-reasoning代码审查助手:集成到IDE的智能提示插件

Phi-4-mini-reasoning代码审查助手&#xff1a;集成到IDE的智能提示插件 1. 智能代码审查的新时代 想象一下&#xff0c;当你正在IntelliJ IDEA中编写代码时&#xff0c;右侧边栏突然弹出一条提示&#xff1a;"这段循环可以改用Stream API简化&#xff0c;点击查看示例&…...

一键修改文件创建 修改 访问时间,这款小工具太方便 小巧无广告

今天再给大家带来一款吾爱原创的轻量小工具 ——文件时间编辑器&#xff0c;由 Thebzk 开发&#xff0c;整个软件只有 376 KB&#xff0c;小巧便携&#xff0c;功能纯粹。 软件下载地址 操作也非常简单&#xff1a;选中需要修改的文件或文件夹&#xff0c;自定义设置好想要的…...

从零部署到实战:用YOLOv11+PyQt5打造你的工地安全帽检测桌面应用(附完整代码)

从零部署到实战&#xff1a;用YOLOv11PyQt5打造你的工地安全帽检测桌面应用 在建筑工地这样的高危环境中&#xff0c;安全帽佩戴检测是保障工人生命安全的重要环节。传统的人工巡检方式不仅效率低下&#xff0c;而且难以实现全天候监控。本文将带你从零开始&#xff0c;使用YOL…...

SenseBoxBLE库详解:phyphox协议下的Arduino BLE透传实践

1. SenseBoxBLE 库深度解析&#xff1a;面向嵌入式工程师的 BLE 数据透传实践指南1.1 库定位与工程价值SenseBoxBLE 是一个专为 senseBox 生态设计的轻量级 Arduino 兼容 BLE 通信库&#xff0c;其核心目标并非构建通用 BLE 协议栈&#xff0c;而是实现传感器数据到 phyphox 移…...

肿瘤微创治疗适用人群有哪些?

肿瘤微创治疗以创伤小、恢复快、精准度高为特点&#xff0c;并非人人适用&#xff0c;但覆盖人群广泛&#xff0c;尤其为无法耐受传统手术或中晚期肿瘤患者提供了重要治疗选择&#xff0c;主要适用人群如下&#xff1a;高龄、体质虚弱患者老年患者常合并高血压、糖尿病、心肺功…...

PxMatrix LED矩阵驱动库:高性能HUB75显示方案详解

1. PxMatrix LED MATRIX 库概述PxMatrix 是一款专为嵌入式平台设计的高性能 RGB LED 矩阵驱动库&#xff0c;原生支持 ESP8266&#xff08;NodeMCU/WeMos&#xff09;、ESP32&#xff08;WROVER/WROOM&#xff09;及 ATmega328P/ATmega2560 等主流微控制器。其核心定位是为 321…...