Andriod Timer 及 Handler 线程间通信

别再对着手册发愁了!手把手教你读懂MIPI-DSI初始化命令(以Rockchip平台为例) 本文深入解析MIPI-DSI初始化命令在Rockchip平台的应用,帮助嵌入式工程师快速掌握LCD屏幕调试技巧。从协议基础到实战指南,详细拆解命令格式、DCS与Generic命令的区别,并提供Rockchip平台的调试全流程与高级技巧,解决常见显示问题。 阅读详情


在android中,經常用到的定時器主要有以下幾種實現:
一、採用Handler與線程的sleep(long )方法
二、採用Handler的postDelayed(Runnable, long) 方法
三、採用Handler與timer及TimerTask結合的方法。
下面逐一介紹:
一、採用Handle與線程的sleep(long )方法
Handler主要用來處理接受到的消息。這只是最主要的方法,當然Handler裡還有其他的方法供實現,有興趣的可以去查API,這裡不過多解釋。
1.定義一個Handler類,用於處理接受到的Message.
Handler handler = new Handler() {
   public void handleMessage(Message msg) {
    //要做的事情
    super.handleMessage(msg);
   }
};
2.新建一個實現Runnable接口的線程類。如下:
public class MyThread implements Runnable{
   @Override
   public void run() {
    // TODO Auto-generated method stub
    while (true) {
     try {
      Thread.sleep(10000);//線程暫停10秒,單位毫秒
      Message message=new Message();
      message.what=1;
      handler.sendMessage(message);//發送消息
     } catch (InterruptedException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
    }
   }
}
3.在需要啟動線程的地方加入下面語句:
new Thread(new MyThread()).start();
4.啟動線程後,線程每10s發送一次消息。
二、採用Handler的postDelayed(Runnable, long) 方法
這個實現比較簡單一些:
1. Handler handler=new Handler();
Runnable runnable=new Runnable(){
   @Override
   public void run() {
    // TODO Auto-generated method stub
    //要做的事情
    handler.postDelayed(this, 2000);
   } 
};
2.啟動計時器:
handler.postDelayed(runnable, 2000);//每兩秒執行一次runnable.
3.停止計時器:
handler.removeCallbacks(runnable);
三、採用Handler與timer及TimerTask結合的方法。
1.定義定時器、定時器任務及Handler句柄
private final Timer timer = new Timer();
private TimerTask task;
Handler handler = new Handler() {
   @Override
   public void handleMessage(Message msg) {
    // TODO Auto-generated method stub
    //要做的事情
    super.handleMessage(msg);
   }
  
};
2.初始化計時器任務。
task = new TimerTask() {
    @Override
    public void run() {
     // TODO Auto-generated method stub
     Message message = new Message();
     message.what = 1;
     handler.sendMessage(message);
    }
   };
3.啟動定時器
timer.schedule(task, 2000, 2000);
簡要說一下上面三步提到的一些內容。
1.定時器任務(TimerTask)顧名思義,就是說當定時器到達指定的時間時要做的工作,這裡是想Handler發送一個消息,由Handler類進行處理。
2. java.util.Timer.schedule(TimerTask task, long delay):這個方法是說,dalay/1000秒後執行task.只執行一次。
java.util.Timer.schedule(TimerTask task, long delay, long period):這個方法是說,delay/1000秒後執行task,然後進過period/1000秒再次執行task,這個用於循環任務,執行無數次,當然,你可以用timer.cancel();取消計時器的執行。

 

-------------------------------------------------------------2011/3/23------------------------------------------------------------------

如果我們採用第一種方法,如何結束掉線程呢?當然如果你的程序在run方法裡有做控制,線程就不用結束,當run方法運行完畢,線程也就隨之結束。那今天就說一下在Handler裡面對線程的控制,如果想要在Handler裡面結束線程,可用:

Thread.currentThread().interrupt();

Thread.currentThread()可以獲得消息發送的線程,interrupt即是中斷。


CoDeSys系列-3、Windows运行时软PLC主站和p-net从站IO设备组网测试 前面CODESY下载安装并熟悉了,p-net搭建从站也已经跑在虚拟机树莓派上了,我们只需要快速搭建一个profinet主站来和从站进行交互即可,这里我们直接用Windows下带的软PLC搭建profinet主站并和p-net的demo从站程序进行IO交互。评估是否进行Windows下的运行时PLC前先看一下注意事项,Windows下安装配置会需要修改boot及防火墙等,可能会影响Windows电脑的正常使用,所以创建项目时的设备可以选择非RTE的。 阅读详情

相关推荐

fMRI脑影像特征提取——Pearson相关与低阶功能连接LOFC(dpabi+nilearn)

一个连接由节点和连接强度(边)组成。功能连接中的节点可以是单个体素,也可以是由脑图谱定义的脑区ROI。通常的做法是将脑图谱中多个或者全部ROI作为节点,或者是将脑图谱中单个ROI与全脑体素作为节点。定义连接强度(边),最常用的方式是Pearson相关,两个节点之间可能没有物理连接,但如果他们的BOLD信号同步性很强,则它们之间可能存在很强的功能上的协作,即很强的功能连接,这是一个很好的表征两个节点间关系的特征。

意疏的学习笔记 2万+

Android——常用定时器

常用定时手段

qq_43745685的博客 5531

【2025CVPR】基于脉冲神经网络的能效目标检测模型:Multi-scale Spiking Detector(MSD)深度解析

本文提出了一种创新的多尺度脉冲神经网络目标检测器(MSD),通过生物启发的ONNB模块和MSDF框架实现了高效准确的目标检测。该模型采用端到端直接训练策略,在COCO数据集上达到62.0%mAP的精度,同时仅需7.8M参数和6.43mJ能耗,较传统方法提升2.8%精度并降低82.9%能耗。实验验证了其在小目标检测和事件数据处理的优越性,为边缘计算应用提供了新范式。

hasakie的博客 1109

Android使用timer和thread实现定时器

两种方法实现android定时器,定时执行任务。

cf8833的博客 736

Kettle入门指南:从安装到数据转换实战

本文提供Kettle(Pentaho Data Integration)的完整入门指南,涵盖从Java环境安装、软件配置到核心概念(转换与作业)的详细解析。通过实战案例,手把手教你如何将文本文件数据导出到Excel,并连接MySQL数据库进行数据导入,帮助你快速掌握这一强大ETL工具的基本使用,实现高效数据搬运与转换。

weixin_29266647的博客 449

WSL2 Ubuntu复现FoundationPose项目(docker)

复现一个基于深度学习的物体姿态估计框架FoundationPose项目,使用docker,WSL2

woaidawangwang的博客 2000

Android三种定时器的简单使用

RT、 网上一搜,有好多的答案,但是貌似大多数都是一样的,我在这稍微精简一下代码,算是总结吧。 定时器 1、线程Thread + sleep new Thread(){ public void run() { try { Thread.sleep(2000);

As的博客 1979

用 OData V2 元数据驱动表格体验:SAP UI5 Smart Table 全面解析

摘要: Smart Table是SAPUI5中基于OData元数据自动生成表格的控件,支持个性化、排序、过滤等高级功能。文章从九个维度深入解析其工作机制:1)通过元数据和注解自动生成列;2)支持多种表格类型;3)关键属性的静态化特性;4)与其他智能控件的协同;5)导航属性和导出的处理;6)响应式设计;7)个性化配置;8)性能优化策略;9)端到端实现案例。Smart Table通过读取OData元数据自动完成表格渲染,大幅减少开发工作量,特别适合企业级应用开发场景。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 322

android 定时器的使用

1、android中通常是使用AlarmManager来定时启动一个单次或重复多次操作的。具体的说就是我们通过AlarmManager设定一个时间和注册一个intent到系统中,然后在该时间到来时,系统为我们发送一个广播,即执行我们设定的Intent(要执行的操作),通常我们使用 PendingIntent来实现“要执行的操作”,PendingIntent可以理解为Intent的封装包,简单的说就...

weixin_30663471的博客 236

TEA-Tiny Encryption算法在FPGA的实现

在FPGA原型中,我们定义了一个TEA_FPGA模块,该模块包含一个输入数据端口(plain)、一个输入密钥端口(key)和一个输出数据端口(cipher)。在模块中,我们通过32轮的循环处理来实现TEA算法的加密过程,并将最终结果存储在cipher变量中。由于FPGA硬件的高速性能,这种基于HDL的TEA算法实现可以在短时间内完成大量的数据加密处理,从而提高加密效率和性能。总之,在FPGA中实现TEA算法可以大大提高加密效率和性能,通过使用硬件描述语言HDL来实现可以更高效、更快速地完成数据加密操作。

BitSlinger的博客 272

Geogebra中级篇016—矩阵(Matrices)

在GeoGebra中,矩阵是一种强大的工具,广泛应用于线性代数、几何变换和数据处理等领域。通过矩阵,我们可以轻松实现复杂的计算和图形变换,如旋转、平移和缩放等操作。不仅如此,GeoGebra的矩阵功能还支持多种运算,如加法、乘法、求逆等,使得用户能够高效地处理线性方程组和向量空间问题。在本文中,我们将深入探讨GeoGebra中的矩阵功能,详细介绍如何创建矩阵、执行常见的矩阵运算,并通过实例展示这些操作在数学和工程应用中的实际价值。这篇文章将为你提供关于GeoGebra矩阵操作的全面指南。

八荒启-交互动画的博客 2584

android定时器的用法总结

在android中,經常用到的定時器主要有以下幾種實現: 一、採用Handler與線程的sleep(long )方法 二、採用Handler的postDelayed(Runnable, long) 方法 三、採用Handler與timer及TimerTask結合的方法。 下面逐一介紹: 一、採用Handle與線程的sleep(long )方法 Handler主要用來處理接受到的消息。這

谦言万语的专栏 1963

双Orin PCIe RC&EP模式互通

orin pcie 互通

乐于分享 3878

从零训练Agentic AI大模型:基座微调、数据构造与部署实战

大模型微调已成为企业落地AI应用的关键技术路径,但真正需要从零预训练的场景极少,更多是基于开源基座模型进行能力对齐。Agentic AI的核心在于让模型具备自主规划、工具调用和动态调整行动的能力,这依赖高质量的训练数据与参数高效微调策略。LoRA与QLoRA作为主流微调方法,能以极低成本注入Agent行为模式,配合DPO偏好优化与强化学习,可显著提升模型在真实任务中的表现。从数据格式设计、训练参数配置到推理部署,本文梳理了一套可复用的Agent训练链路,帮助开发者在业务场景中高效构建能调用工具、完成多步任务

weixin_33946020的博客 337

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

android_计时器_定时循环任务

[code="java"] myTimerTask timerTask = new MyTimerTask(); Timer timer = new Timer(true); timer.schedule(timerTask, 0, 1000);//定时每秒执行一次 //定时任务,定时发送message private class myTimerTask exte...

包子大叔的笔记 504

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Android 之 ProgressBar用法介绍

[size=large][color=brown][b]布局文件:[/b][/color][/size] [code="java"] [/code] [size=medium][color=darkblue][b]主程序入口:[/b][/color][/size] [code="java"]pack...

Sunzone 200

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

android5秒后自动跳转,让一个Activity停留几秒后再跳转

有时候我们需要在某个 Activity 停留几秒种,然后再跳到下一个 Activity。那么这个怎么实现呢?一个方法是可以使用 Thread 的 sleep 函数,这个我们在 用Handler实现线程间的消息通信 也有提到:try {Thread.sleep(1 * 1000);} catch (InterruptedException e) {// TODO Auto-generated cat...

weixin_34191685的博客 907

android 延时执行的几种方式

①开启新线程 复制到剪贴板  Java代码 new Thread(new Runnable(){       public void run(){           Thread.sleep(XXXX);           handler.sendMessage();----告诉主线程执行任务       }   }).start

mecho的专栏 721

Android定时器的三种使用方法

本文实例为大家分享了Android中使用定时器的三种方法,供大家参考,具体内容如下 图示: 因为都比较简单,所以就直接贴代码(虑去再次点击停止的操作),有个全局的Handler负责接收消息更新UI 第一种方法:Thread.sleep();方法 Runnable runnable = new Runnable() {     @Override

hxqneuq2012的专栏 723

Android学习之定时任务

UI 相关定时:优先用Handler,但需注意Runnable的静态内部类封装和生命周期清理。后台长周期任务:首选,自动处理版本兼容和电量优化,避免直接使用或。响应式编程场景:使用RxJava或协程,前者适合复杂异步流,后者语法更简洁且轻量。避免高频唤醒:尽量将多个定时任务合并为的批量调度,减少设备唤醒次数。内存管理核心原则:任何持有上下文或 UI 组件引用的定时任务,必须在生命周期结束时(如)停止或取消。

m0_69682018的博客 1654

android 中定時器的幾種用法總結

<br />在android中,經常用到的定時器主要有以下幾種實現:<br />一、採用Handler與線程的sleep(long )方法<br />二、採用Handler的postDelayed(Runnable, long) 方法<br />三、採用Handler與timer及TimerTask結合的方法。<br />下面逐一介紹:<br />一、採用Handle與線程的sleep(long )方法<br />Handler主要用來處理接受到的消息。這只是最主要的方法,當然Handler裡還有其他的方法

herryz的专栏 1671

Android定时器的使用

使用Timer+TimerTask + Handler的方法: 典型实现: step1:在onCreate方法中,创建Timer对象及TimerTask对象: timer = new Timer();//创建timer对象 timer.schedule(new TimerTask() { @Override public void run() { ...

guanguanboy的专栏 2373

android 定时器的使用,Android中实现定时器的四种方式

第一种方式利用Timer和TimerTask1、继承关系java.util.Timer基本方法schedule例如:timer.schedule(task,delay,period);//delay为long,period为long:从现在起过delay毫秒以后,每隔period毫秒执行一次。schedule方法有三个参数第一个参数就是TimerTask类型的对象,我们实现TimerTask的r...

weixin_31293733的博客 1484

Android开发中如何实现一个定时任务

协程可以用来简化异步编程和线程管理。协程是一种轻量级的线程,它可以在不阻塞线程的情况下挂起和恢复执行。协程安卓提供了一些扩展函数,可以用来创建和处理定时任务。其中,delay函数可以用来暂停协程的执行一段时间,可以用来实现倒计时或者周期性的定时任务。例如,以下代码可以实现一个10秒的倒计时,每隔1秒更新一次:

star_nwe的博客 5253

Android定时器Timer简单使用

Android定时器Timer简单使用Timer简介Timer使用总结 Timer简介 Timer(计时器)位于 java.util包下,可用于创建定时任务,任务可以安排为一次性执行,也可以定期重复执行。每个计时器对象对应一个后台线程(TimerThread)。简单理解为创建Timer对象,对应TimerThread线程循环开始从TaskQueue队列中执行一个TimerTask任务。 Timer使用 创建Timer对象 var timer = Timer() 添加需要执行的任务 // 创建计

这个杀手不太累的博客 1万+

Android实现定时器的几种方法

前言 这几天正在看Android官方的开发文档,里面有很多很值得思考的开发建议,有时间的朋友可以去看一下(官方是英文文档,如果看不懂可以通过浏览器插件翻译对比着看,还是很方便的)。 其中一篇课程提到了AlarmManager,这个类之前仅仅是了解这是一个闹钟的管理器,如果要是做一些胜过提醒、闹钟之类的软件都需要用到。官方的例子用来实现定时器,突然觉得这是一个很神奇的事情,就搜集了一些资料,把我...

Mr_Duoduo的博客 5276
上一篇: The Biggest Differences Between Google Play and Apple App Store Keyword Entry
下一篇: LocalBroadcastManager 使用详结
皓浩
博客等级 码龄18年 157粉丝 121原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值