android 开启一个定时线程_ANDROID开发中定时器的3种方法
在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();取消计时器的执行。
相关文章:

083 HBase的完全分布式的搭建与部署,以及多master
一:前提准备 1.设置时间同步 2.清空logs,datas 3.格式化集群 bin/hdfs namenode -format 4.重启集群 sbin/start-dfs.sh sbin/start-yarn.sh 5.删除zookeeper下的data,并新建zkData 6.在zkData下新建myid 7.分发,后,修…

区块链技术指北
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 回顾近现代几次工业革命,人类的发展随着技术的变革而突飞猛进。第一次工业革命革命,以工作机的诞生为开始,以蒸…

cmd查看所有数据库 db2_DB2数据库常用命令集
【IT168 技术】在DB2的开发过程中,贯穿整个开发过程还有很重要的一部分工作就是数据库的维护;对于维护一个庞大信息系统来说是非常必要的;留一份简易的维护手册,以备不时之需;以下收集到的部分维护命令,以飨…

[原创]SparkR针对mysql的数据读写操作实现
网上翻了两天没找到一份有用的文章,自己研究SparkR的官方api文档,总算找到了实现的接口 我是用R语言加载SparkR库的方式,当然也可以直接用SparkR控制台就不用自己加载SparkR的库了 #首先加载sparkR的库 Sys.setenv(TEST_HOME "/root/so…

使用vue2.0 vue-router vuex 模拟ios7操作
其实你也可以,甚至做得更好... 首先看一下效果:用vue2.0实现SPA:模拟ios7操作 与 通讯录实现 github地址是:https://github.com/QRL909109/ios7 如果您觉得可以,麻烦给一个star,支持我一下。 之前接触过Ang…

区块链技术是否会终结开源时代?
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 2017年11月18~19日,在上海交大召开的2017中国开源年会,在第二天我们组织了一个“闭门会议”。在这个闭门会议上,…

Direct2D开发:Direct2D 和 GDI 互操作性概述
本主题说明如何结合使用 Direct2D 和 GDI(可能为英文网页)。有两种方法可以结合使用 Direct2D 和 GDI:您可以将 GDI 内容写入与 Direct2D GDI 兼容的呈现器目标,也可以将 Direct2D 内容写入 GDI 设备上下文 (DC) 0X01 将Direct2D内…

vmware虚拟机启动centOs黑屏
如图所示 , 我的VM 启动虚拟机之后就变成了上面的样子,一直不动,ping也ping不好,这个时候 : 1. 要么 内存不够了; 2. 要么 网络协议存在问题了; 本地windows环境在管理员的cmd命令行输入 &…

plc和pc串口通讯接线_让你搞懂PLC串口通讯和通讯接口,这东西估计没几个能说清楚~...
电力作业人员在使用PLC的时候会接触到很多的通讯协议以及通讯接口,最基本的PLC串口通讯和基本的通讯接口你都了解吗?1,什么是串口通讯?串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混…

西班牙放大招,利用区块链技术防腐
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 在过去十年来,西班牙爆发了一系列引人注目的腐败丑闻,其中以公共采购最甚。但据TI 2017年的腐败认知指数表明,西…

FreeBSD 8
FreeBSD 8.0的安装过程和7.2区别不大。先在FreeBSD官方网站上下载安装镜像,我一般都下载DVD的ISO,也有人爱好下最小的安装包,然后通过FTP或HTTP方式从网上下载各个程序包。这里就以DVD的ISO为例,下载DVD的ISO后,刻录到…

c潭州课堂25班:Ph201805201 MySQL第二课 (课堂笔记)
mysql> create table tb_2( -> id int, -> name varchar(10) not null -> ); 插入数据 insert into tb_2 value(1,xiaobai); 在非空时,NOT NULL 必须有值, 2,在已有的表中设置一个字段的非空约束 mysql> alter table tb_2 -…

vanpopup 高度_解决VantUI popup 弹窗不弹出或无蒙层的问题
背景####组件PopupTime.vue把vant官网的popup时间选择器抽成组件:popup1show: true 即弹窗显示:title"popupTitle.popupName"v-model"currentDate"type"datetime"cancel"onCancel" confirm"onConfirm" class&quo…

区块链技术入门,都涉及哪些编程语言?
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 关于区块链的技能掌握,提到最多的就是Go语言和C、Java,但是很多人产生了歧义,认为只有这几种语言才可以&#x…

centos安装配置nginx,ssl生产和配置教程
【一】nginx安装nginx安装带ssl扩展: cd /usr/local/src #进入用户目录 wget http://nginx.org/download/nginx-1.15.0.tar.gz #下载最新版本nginx tar -zxvf nginx-1.15.0.tar.gz #解压 cd nginx-1.15.0 #进入目录 ./configure --prefix/opt/nginx --with-http_stu…

如何将github上的 lib fork之后通过podfile 改变更新源到自己fork的地址
解决办法: http://stackoverflow.com/questions/20936885/cocoapods-and-github-forks 就是fork完后,提交更改到自己的github上 然后修改podfile的pod导入方式 pod lib,:github>your fork lib.git,:commit >your commitid转载于:https://www.cnblogs.com/code…

证书 vivo_iQOO 5 Pro获泰尔实验室首张流畅性能体验五星证书
近日,中国泰尔实验室向vivo旗下的iQOO 5 Pro(V2025A)型号手机颁发了流畅性能体验五星证书。据中国泰尔实验室官方表示,这是“泰尔证书-流畅性能体验”测评方案推出后的首张证书。“泰尔证书-流畅性能体验”测评方案据悉,“泰尔证书-流畅性能体…

GUI编程之tkinter
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 0. 前言 本文内容为使用Python3的tkinter模块,开发GUI。在阅读本文前,请确保你已经或可能满足以下条件: 电脑中…

js插件 webp_(转)让浏览器支持Webp
转载自:https://segmentfault.com/a/1190000005898538?utm_sourcetuicool&utm_mediumreferral转换工具判断浏览器支持webP方法一:functioncheckWebp() {try{return (document.createElement(canvas).toDataURL(image/webp).indexOf(data:image/webp…

一些大佬博客里的个签
觉得很励志~遇到了就复制下来激励自己。 1.宜静默,宜从容,宜谨严,宜俭约。 //读了两遍感觉心都静下来了。 2.别打扰我,我还能写一套程序。 3.时间并不会因为你的迷茫和迟疑而停留,就在你看这篇文章的同时,…

以太坊搭建私有链
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 1.关于私有链 在以太坊上部署智能合约、发起交易需要花费以太币。而私链和公有链没有关系,不用同步大量的数据,也不用花钱购…

C++回溯法走迷宫
1 #include <iostream> 2 #include <iomanip> 3 #include <cstdlib> 4 using namespace std;5 6 #define MaxSize 100 7 int maze[10][10] //定义一个迷宫,0表示通道,1表示墙 8 {9 { 1,1,1,1,1,1,1,1,1,1 },10 { 1,0,…

js放大镜特效
原理分析:当鼠标在小图片上移动时,通过捕捉鼠标在小图片上的位置,定位大图片的相应位置。(同时,当鼠标在小图片上移动时,右侧大图片往相反的方向移动。) 放大镜特效设计: ①页面元素…

5页面返回上个页面定位_5个步骤,画好页面流程图
对于任何产品设计来说,构建流程都是一个绕不开的环节。其奠定了后续的产品框架,是用户体验的基石。本文将从定义和方法出发,结合实际案例,深入浅出地阐述流程图的作用以及画法。最近在做一个关于阅读笔记的原型,业务流…

EOS智能合约:system系统合约源码分析
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 eosio.system 概览 笔者使用的IDE是VScode,首先来看eosio.system的源码结构。如下图所示。 本文分析的源码来自于eosio.contracts。 …

文字超过省略_从楚篆到楚玺的文字结构
从古文字研究的角度来说,楚玺文字也是楚文字系统中重要的组成部分。古文字发展演变的一般规律,如简化、繁化、异化、分化、类化等在印章上也有反映。在楚系简帛书没有大量出土发现和研究出版前,楚玺研究的文字参照物不多,主要是依…

caffe prototxt分析
测试用prototxt name: "CIFAR10_quick"layer {name: "data" type: "MemoryData" top: "data" top: "label" memory_data_param {batch_size: 1 #样本个数 channels: 3 height: 32 width: 32 }}layer {name: "conv1…

Mysql与Oracle区别
Mysql与Oracle区别 文章分类:数据库 周五去一家公司去面试,那公司经理问了关于Mysql与Oracle的区别问题,以前没有总结,回答也不是很好,只是凭感觉,先总结如下: 1. Oracle是大型数据库而Mysql是中小型数据库…

区块链 + 大数据:EOS存储
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 谈到区块链的存储,我们很容易联想到它的链式存储结构,然而区块链从比特币发展到今日当红的EOS,技术形态已经演化…

全网最全的Windows下Anaconda2 / Anaconda3里Python语言实现定时发送微信消息给好友或群里(图文详解)...
不多说,直接上干货! 缘由: (1)最近看到情侣零点送祝福,感觉还是很浪漫的事情,相信有很多人熬夜为了给爱的人送上零点祝福,但是有时等着等着就睡着了或者时间并不是卡的那么准就有点强…