android 中多个线程处理完成触发一个事件如何设计

JAVA多线程之并发与同步,Lock与Syncronized 说到线程,就不得不先说线程和进程的关系。进程是系统的执行单位,一般一个应用程序即是一个进程,程序启动时系统默认有一个主线程,即是UI线程,我们知道不能做耗时任务,否则ANR程序无响应。这时需要借助子线程实现,即多线程。由于线程是系统CPU的最小单位,用多线程其实就是为了更好的利用cpu的资源。一、多线程创建方式//线程休眠1000毫秒,sleep使线程进入Block状态,并释放资源xx.start();//启动线程,run函数运行@Override@Override。 阅读详情

在项目需求中做同步的时候,有时候会有这种设计,

服务器端有统一的可配置的数据, 开启几个线程去服务器请求数据。线程任务完成后,将获取数据存入数据库。

用于界面展示。

每一个线程对应的数据库操作ok后,再发请求去服务端获取手机唯一id 对应的用户的自定义数据。

每一个线程都获取数据ok,触发一个事件。如弹出对话框,然后告诉用户服务端有数据,是否同步。


这种需求可以用事务处理的方法来做。


一,如果执行的事务的数目确定的情况下,可用:

1.变量计数法。

一共n个线程。每完成一个线程任务,count++ ,当count  == n 的时候,触发事件。

2.容器计数法。

每开始一个线程任务,容器中加入一个线程id,

每完成一个线程任务,容器中删除对应的线程id,

当容器为空 的时候,触发事件。


二,如果执行的事务的数目不确定的情况下,可用:

守护线程遍历的办法:

每开始一个线程任务,AtomicLong mTaskCounter = new AtomicLong(); 计数加一。执行完成后计数减一。

当守护线程 mTaskCounter 为0 时, 不在阻塞。执行finish action。

	public void startScan(ArrayList<String> paths) {
		try {
			for (String path : paths) {
				scanDir(path);//多线程执行
			}
			while (mTaskCounter.get() > 0) {
				Thread.sleep(100);
			}

			//do finish action
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}

多线程 扫描 文件 demo  :

https://github.com/javalive09/ScanSdCardDemo/tree/master/app/src/main/java/peter/util/scandemo



Android中使用performClick触发点击事件 通过了解和掌握这些技术,您可以在需要的时候通过编程方式模拟用户的点击操作,从而实现更灵活的应用程序设计和测试。这个方法的作用是模拟用户的点击操作,从而执行与该视图关联的点击事件监听器(ClickListener)。在Android应用程序中,有时需要通过编程方式模拟用户的点击操作,这时候就可以使用。在这个例子中,我们首先找到布局文件中定义的按钮,并设置了按钮的点击事件监听器。编程触发:在某些特定的编程逻辑中,需要根据条件动态触发视图的点击事件,这时候。方法来模拟用户的交互操作,验证应用程序的行为。 阅读详情

相关推荐

Android 的事件处理机制

Android 提供了两种方式的事件处理机制:<1> 基于监听的事件处理; <2> 基于回调的事件处理。 (说明:事件处理就是为用户动作提供响应的机制) 一、基于监听的事件处理 1、两种方式 (1)为 Android 界面组件绑定特定的事件监听器; (2)在界面布局文件中,为 UI 组件的 android:onClick 属性指定事件监听方法。(注:该方式需要在 Activity 中定义该事件监听方法) 2、事件监听处理模型 (1)涉及三类对象: Event Source(事件源)

Z丶北城大叔 1172

java 事件重复执行_android – RxJava作为事件总线,当只有一个事件发布时,onNext被多次调用...

我正在用RxJava实现一个事件总线(RxBus).RxBus.javapublic class RxBus {private static final String TAG = LogUtils.makeTag(RxBus.class);private static final RxBus INSTANCE = new RxBus();private final Subject mBusSubj...

weixin_27972919的博客 610

android触摸事件处理流程,这里有份超全Android体系化进阶学习图谱

相信大多数从事Android开发的朋友们越来越发现,找工作越来越难了,面试的要求越来越高了除了基础扎实的java知识,数据结构算法,设计模式还要求会底层源码,NDK技术,性能调优,还有会些小程序和跨平台,比如说flutter,以思维脑图的方式展示在下图;点击文档前往获取面试资料与视频教程;【阿里P7级别Android架构师技术脑图+全套视频】有什么是必须掌握的吗?相信大多数从事Android开发的朋友们越来越发现,找工作越来越难了,面试的要求越来越高了。

m0_60388261的博客 1135

Android中让多个线程顺序执行

【原文地址 点击打开链接】 版权声明:本文为博主原创文章,未经博主允许不得转载。转载注明出处:Sunzxyong 目录(?)[+] 线程调度是指按照特定机制为多个线程分配CPU的使用权。  有两种调度模型:分时调度模型和抢占式调度模型。    分时调度模型:是指让所有的线程轮流获得cpu的使用权,并且平均分配每个线程占用的CPU的时间片

大神了没 5297

Android _ Jetpack 处理回退事件的新姿势 —— OnBackPressedDispatcher

笔者之前工作是在金融公司可能并不是特别追求技术,而笔者又是喜欢追求技术的人,所以格格不入,只能把目标放在互联网大厂了。也希望大家都去敢于尝试和追逐自己的梦想!BATJ大厂Android高频面试题《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!ndroid高频面试题**[外链图片转存中…(img-AlOg2B6i-1712620205748)][外链图片转存中…(img-vdILgZlQ-1712620205748)]

2401_84149256的博客 1048

Android中的线程模型与机制面试问题之主线程/UI线程

摘要: Android规定UI操作必须在主线程执行,因UI工具包非线程安全,多线程更新易导致竞态和崩溃。子线程操作UI会引发CalledFromWrongThreadException。主线程阻塞(如网络请求、复杂计算)会触发ANR(应用无响应),需将耗时任务移至子线程(如Handler、协程)。最佳实践:主线程仅处理UI和事件,耗时操作通过异步机制(线程池、RxJava等)在后台执行,确保流畅性。

dongdeaiziji的专栏 983

Android和iOS开发中的异步处理(三)——多个异步任务协作

本文是系列文章《Android和iOS开发中的异步处理》的第三篇。在本篇文章中,我们主要讨论在执行多个异步任务的时候可能碰到的相关问题。 通常我们都需要执行多个异步任务,使它们相互协作来完成需求。本文结合典型的应用场景,讲解异步任务的三种协作关系: 先后接续执行 并发执行,结果合并 并发执行,一方优先 以上三种协作关系,本文分别以三种应用场景为例展开讨论。这三种应用场景分别是: 多级缓存 并...

weixin_33709219的博客 456

Android 使用AsyncTask 后监听异步加载完毕的动作

AsyncTask的使用方法网上有很多例子,使用起来也非常的方便。这里就不详细说具体的使用方法了。场景模拟当我们在加载一个列表的时候,比如GridView,这时候我们考虑到不阻塞UI的做法,一般会使用线程Thread、Timer或者使用AsyncTask。

android 借助AccessibilityService实现模拟点击功能-onAccessibilityEvent接收事件的详细处理(三)

本篇分析对接收事件的处理 需要思考的问题 android的事件会回调在public void onAccessibilityEvent(AccessibilityEvent event)这个方法里,这是在主线程,直接在这里处理合适吗? 如果你的应用需要实现多个功能,怎么在这个方法里面保证他们的执行隔离呢? 当微信不知道什么原因,或者是你代码不健壮导致的页面停住,不再触发新的event事件,你...

西湖吹雪 隔岸观火 9261

CYUSB3065配置CMOS

按照OG02B10的时序电路,在通过SCCB配置CMOS之前,需要三个电源上电,Xshutdown高电平和配置时钟电路。找到手册的第6章SCCB(跟IIC很像),可以看到SCCB的地址与SID引脚有关,这个需要到硬件原理图上确认下。这是Cypress的一个支持MIPI和UVC的模块,有例程支持OV5640,现在要替换替换成OG02B10。寄存器参数需要找到厂家的FAE,由他们提供,OG02B10的资料已经上传。(2)参考得宏的电路,时钟由主控提供,目前程序未实现。这里有两个重要参数需要搞定,摄像头的。

qq_40773212的博客 2944

DAC8568 Controller

DAC8568 ControllerDAC8568 简介串行接口三级目录 DAC8568 简介 PIN Description Name Description LDAC‾\overline{LDAC}LDAC load DACs SYNC‾\overline{SYNC}SYNC 低电平有效,电平触发控制, 该输入为输入数据的帧同步信号. 当SYNC为低,使能DAC内输入移位寄存器,并在随后的所有时钟沿采样数据。 在第32个时钟之后,DAC更新输出。 若不到32个时钟SYNC被置高(即

u010170039的博客 5129

android自动调用按钮事件,Android Button自动触发点击事件

原因开发过程中遇到button.performClick()无效,原因是View.performClick()需要再UI线程中调用才会有效执行。响应系统调用的方法(比如报告用户动作的onKeyDown()或一个生命周期回调方法)永远在界面线程中进程,所以onCreate里面调用button的performClick没问题,而通过code直接调用相当于是代码执行,并不会触发android的UI线程。...

weixin_28338005的博客 2596

知识抽取框架OneKE

OneKE 中指令的格式采用了类 JSON 字符串的结构,本质上是一种字典类型的字符串。优化知识抽取的性能不仅能够强化模型对世界知识的理解和应用,还能够构建知识要素之间的跨领域的深度关联和依赖,这些都是大规模知识图谱构建的关键依赖。一直是知识图谱大规模落地的关键难题之一,因为真实世界的信息高度碎片化、非结构化,大语言模型在处理信息抽取任务时仍因抽取内容与自然语言表述之间的巨大差异导致效果不佳,自然语言文本信息表达中因隐式、长距离上下文关联存在较多的歧义、多义、隐喻等,给知识抽取任务带来较大的挑战。

qq_32907491的博客 3200

Android 的事件处理

Android 的事件处理概括:在自学Android的进程中,今天正式步入事件处理。下面将对事件处理的学习过程做一个随学笔记。一.事件处理概括android事件处理机制: 基于监听的事件处理 基于回调的事件处理 ->处理通用事件,代码比较简洁 注:基于监听的事件处理比基于回调的事件处理更具优势。 基于监听的事件处理分工明确,事件源和事件监听有两个类分开执行,因此具有更好的可维护性 Android的事

xingshaosheng的博客 1228

多模态情感识别(MER)数据集实战指南:从IEMOCAP到应用落地

本文提供了多模态情感识别(MER)从数据集到应用落地的完整实战指南。以经典IEMOCAP数据集为例,详细讲解了音频、视觉、文本等多模态数据的预处理、特征提取与融合技术,并分享了模型训练调优心得及面向智能客服、在线教育等场景的部署考量,帮助开发者快速构建高效可用的MER系统。

h3i4j的博客 1070

一文解释电路中常用电子元器件应用和选型01

电容和二极管是电路中最常用的两个电子元器件,种类和系列众多,这里简单总结一下应用场景和选型方式 电容(Capacitor) 电容的种类(20种以上)和应用非常广泛,但是我经常遇到的无非就是下面这几种: 应用 1.隔直流。 2.旁路(去耦) 3.耦合 4.滤波 5.温度补偿 6.计时 7.调谐 8.整流 9.储能 种类 1. 陶瓷电容 2. 云母电容 3. 铝电解电容 4. 钽

weixin_43904073的博客 2236

Android input事件处理流程

input事件

小匠码农 1295

【嵌入式DIY实例-ESP32篇】-智能花园助手

本文介绍了一个基于ESP32的智能花园监控系统。系统使用ESP-EYE摄像头开发板,集成了土壤湿度传感器、DHT22温湿度传感器和电磁阀等模块,实现植物生长环境监测与自动灌溉功能。硬件部分详细说明了各传感器的接线方式,软件部分展示了如何通过Firebase实现数据存储和远程监控。系统可实时采集土壤湿度、空气温湿度等数据,并通过摄像头监控植物状态,当检测到环境参数异常时,可自动控制水泵进行灌溉,为植物提供最佳生长环境。

视觉与物联智能 263

android 实现一个按钮按下时总触发一个事件

一.简单的思路为:生产者+消费者模式来实现 1.重写这个对象的触摸事件(对触摸事件与事件分发机制的同学不了解的可以查阅其他资料) 2.在MotionEvent.ACTION_DOWN:事件中启动一个线程,这个线程类似生产者,它不停的生产想要的事件 这里的事件为了调用的顺序,建议采用队列的方式来缓存,事件对象可任意 3.在MptionEvent.ACTION_UP:事件中取消这个线程,取消线

刘胡来 1万+

Unity小游戏接入抖音敏感词检测

摘要: 本文介绍了Unity小游戏接入抖音敏感词检测的方法。抖音官方提供了两种API:SensitiveWordCheck用于检测敏感词,ReplaceSensitiveWords用于替换敏感词。此外,若使用键盘输入事件,可通过tt.onKeyboardComplete监听回调,平台会自动屏蔽敏感词(替换为*)。接入官方字库可有效避免审核驳回,适用于小游戏中的用户输入功能(如起名系统)。附官方文档链接及参数说明。

类人_猿的博客 4594

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

android按键连续按下事件处理

android中有Button控件,针对Button控件有2个非常经典的处理shi

liaosongmao1的专栏 3278

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Android基于回调的事件处理

在 Android 开发中,回调机制(基于回调的事件处理)是一种更加灵活和通用的解决方案,适用于异步操作、跨模块通信、自定义组件等多种场景。相较于传统的基于监听器的事件处理机制,回调机制的优势在于更高的灵活性和更广泛的应用范围。通过合理使用回调机制,可以显著提高代码的可维护性和扩展性。使用 OkHttp 进行网络请求时,可以充分利用其提供的Callback接口来处理异步操作的结果。

m0_69682018的博客 1194

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

android中用代码触发一个按钮的点击事件

android中用代码触发一个按钮的点击事件 button.performClick();

小祝的专栏 4888

Android开发——长按触发事件

1,绑定控件,设置触发事件 View gain_set_sub_6 = findViewById(R.id.gain_set_sub_6); gain_set_sub_6.setOnTouchListener((v, event) -> { if(event.getAction() == MotionEvent.ACTION_DOWN){ updateAddOrSubtract(v.getId()); //手指按下时触发不停的发送消息 }else if(eve

m0_38012497的博客 1356

Android Button自动触发点击事件

原因 开发过程中遇到button.performClick()无效,原因是View.performClick()需要再UI线程中调用才会有效执行。 响应系统调用的方法(比如报告用户动作的onKeyDown()或一个生命周期回调方法)永远在界面线程中进程,所以onCreate里面调用button的performClick没问题,  而通过code直接调用相当于是代码执行,并不会触发an

haozidao的专栏 3万+
上一篇: android 中的多线程使用逻辑
下一篇: android真机中使用sqlite3
javalive09
博客等级 码龄16年 43粉丝 281原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值