前言

  google在Android上提供了很多个关于时间的操作类,比如长时间的定时操作可以使用AlarmManager 定时器,而中等时间和短时间的定时操作就依靠Timer与TimerTask来实现.其实Timer与TimerTask的用法很简单并没有可以多说的,直接看代码即可.

简单的Demo

有一点要注意TimerTask的run()是在子线程的.

private void timeTask(){
TimerTask timerTask = new TimerTask() { //创建定时触发后要执行的逻辑任务
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "触发TimerTask", Toast.LENGTH_SHORT).show();
}
}); }
}; Timer timer = new Timer();
timer.schedule(timerTask, 5*1000); //启动定时任务 }

TimerTask API介绍

仅有三个拉出来说明一下

        timerTask.scheduledExecutionTime();//返回这个任务的预定执行时间
timerTask.cancel();//取消,取消这个任务
timerTask.run();//执行run(); 差不多就是立即执行任务了

Timer API介绍

        timer.cancel();//取消这个定时器,但是不停止正在执行的任务,停止后此定时器无法在添加TimerTask任务(线程被关闭了)
timer.purge();//清除TimerTask任务,从此计时器的任务队列中删除所有已取消的任务,调用此方法对计时器的行为没有影响
timer.scheduleAtFixedRate(timerTask, 5*1000, 10*1000);//重复执行任务,第二个参数为延迟执行任务的时间,第三个参数为后续重复任务的延迟时间

请注意 timer.cancel(); 这里的取消是取消定时器与取消任务是不一样的..

一些坑

  1.Timer 定时器,在定时长时间任务的情况下就会开始出现不准确或者不触发推迟很久触发的问题。能准确触发是根据设备是否睡眠的情况而定的,如设备未睡眠那么30分钟内的都是相对准确的,但是不保证大于30分钟是否准确。 而如果设备已经睡眠,只要睡过去了大概就根据Doze模式的周期触发定时器了。定时越长越不准确并可能被延迟的越长或者干脆不触发。  以上是我个人在项目实际情况下的经验之谈。 我在物联设备项目里,我们的物联设备关闭了Doze模式,但是原生的Android系统依然会有自带睡眠功能(这个自带的睡眠可以被一直打扰唤醒,没有Doze模式这么强规则),如果你设定一个3小时后的任务,那么基本上是不会触发这个任务的。 而设置30分钟左右的任务还是能够准确触发。 所以结论是如果长时间的定时任务还是交给AlarmManager来完成。 而30分钟内的定时任务并且设备不会睡眠的情况下可以交给Timer来完成,如果是10分钟 5分钟的短定时 完全就可以交给它来完成定时任务了。

end

Android 开发 重写定位器类Timer与TimerTask的更多相关文章

  1. Android开发常用工具类

    来源于http://www.open-open.com/lib/view/open1416535785398.html 主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java. 目前 ...

  2. Android开发 静态static类与static方法持有Context是否导致内存泄露的疑问

    简述 在Android开发的过程中,难免会使用单例模式或者静态方法工具类.我们会让它们持有一些外部的Context或者View一般有以下几种情况: 单例模式,类的全局变量持有Context 或 Vie ...

  3. 最全Android开发常用工具类

    主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java. 目前包括  HttpUtils.DownloadManagerPro.Safe.ijiami.ShellUtils.Pack ...

  4. 29个android开发常用的类、方法及接口

    在安卓开发中,我们常常都需要借助各种各样的方法.类和接口来实现相关功能.提升开发效率,但对于初学者而言,什么时候该用什么类.方法和接口呢?下面小编整理了29个,日常开发中比较常用的类.方法.接口及其应 ...

  5. Android开发中JavaBean类和序列化知识的理解

    原创文章,转载请注明出处:http://www.cnblogs.com/baipengzhan/p/6296121.html Android开发中,我们经常用到JavaBean类以及序列化的知识,但经 ...

  6. android 开发 常用工具类

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38965311,本文出自[张鸿洋的博客] 打开大家手上的项目,基本都会有一大批的辅 ...

  7. android开发网络连接工具类(一)

    网络连接工具类整理: package com.gzcivil.utils; import java.io.IOException; import java.util.ArrayList; import ...

  8. android开发Tost工具类管理(一)

    Tost工具类管理: package com.gzcivil.utils; import android.content.Context; import android.widget.Toast; / ...

  9. Android开发中Context类的作用以及Context的详细用法

    Android中Context的作用以及Context的详细用法 本文我们一起来探讨一下关于Android中Context的作用以及Context的详细用法,这对我们学习Android的资源访问有很大 ...

随机推荐

  1. css的各种动画

    /*淡入*/@keyframes fade-in { 0% { opacity: 0; } /*初始状态 透明度为0*/ 40% { opacity: 0; } /*过渡状态 透明度为0*/ 100% ...

  2. JQuery----操作01

    ---恢复内容开始--- 一 JQuery选择器: 基本选择器和基本过滤器和筛选选择器 基础选择器: <title>Title</title> <script src=& ...

  3. 《python for data analysis》第九章,数据聚合与分组运算

    # -*- coding:utf-8 -*-# <python for data analysis>第九章# 数据聚合与分组运算import pandas as pdimport nump ...

  4. 请用java解析下xml

    Java   XML简介 XML(EXtensible Markup Language)  可扩展标记语言 可以说是一个文本文件 作用数交互  配置应用程序 Xml解析技术 三种方式 Dom 文档数据 ...

  5. ifconfig 网卡 下面的参数

    ifconfig  eth1 eth1 Link encap:Ethernet HWaddr 20:12:07:04:05:00 inet addr:172.16.77.174 Bcast:172.1 ...

  6. 使用 Flask-Docs 自动生成 Api 文档

    影响我写文档的原因可能是代码和文档分离,有时候写完代码会忘记补文档,而且不能及时查看,使用 Flask-Docs 可以解决我的问题,这个插件可以根据代码注释生成文档页面,代码注释改动文档可以及时更新, ...

  7. 修复因为存储空间问题引起的nexus 服务启动异常

      故障描述 因为nexus所在服务器存储空间满了, 做了部分清理操作,结果nexus 启动异常,提示错误信息基本类似如下: build 285537d2767275f460df32c6a3be01b ...

  8. #Windows# 删除桌面删除不了文件夹

    问题:某个文件夹直接删除提示找不到. 解决方法:进入命令行,使用rmdir命令,删除成功. 具体命令为: cd /d D:\Desktop //使用/d可以改变驱动器,不用这个参数只能在同一个驱动器里 ...

  9. Kafka入门 --安装和简单实用

    一.安装Zookeeper 参考: Zookeeper的下载.安装和启动 Zookeeper 集群搭建--单机伪分布式集群 二.下载Kafka 进入http://kafka.apache.org/do ...

  10. xml和java对象互转:JAXB注解的使用详解

    先看工具类: import org.slf4j.Logger; import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; ...