android的timertask,Android 中 Timer 和 TimerTask的使用「建议收藏」

Android中Timer是一个普通的类,其中有几个重要的方法;而TimerTask则是一个抽象类,其中含有一个抽象方法run()。使用Timer类中的schedule()方法可以完成对TimerTask的调度,该方法具有三个参数,其函数声明如下:publicvoidschedule(TimerTasktask,longdelay,longperiod)其中第一个参数为TimerTa…

大家好,又见面了,我是你们的朋友全栈君。

Android中Timer是一个普通的类,其中有几个重要的方法;而TimerTask则是一个抽象类,其中含有一个抽象方法run()。

使用Timer类中的schedule()方法可以完成对TimerTask的调度,该方法具有三个参数,其函数声明如下:

public void schedule(TimerTask task, long delay, long period)

其中第一个参数为TimerTask的对象,通过实现其中的run()方法可以周期的执行某一个任务;第二个参数表示延迟的时间,即多长时间后开始执行;第三个参数表示执行的周期。

多个TimerTask是可以共用一个Timer的,通过调用Timer的schedule方法可以创建一个线程,并且调用一次schedule后TimerTask是无限的循环下去的,使用Timer的cancel()停止操作。当同一个Timer执行一次cancle()方法后,所有Timer线程都被终止。

这里为了验证Timer和TimerTask的用法,举了一个案例进行验证,其源代码如下所示:

package com.glemontree.timetaskdemo;

import java.util.Timer;

import java.util.TimerTask;

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

import android.view.View;

import android.widget.TextView;

public class MainActivity extends Activity {

private int secondLeft = 6;

private TextView textView;

Timer timer = new Timer();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

textView = (TextView) findViewById(R.id.texttime);

}

public void begin(View view) {

timer.schedule(task, 1000, 1000);

}

TimerTask task = new TimerTask() {

@Override

public void run() {

// TODO Auto-generated method stub

runOnUiThread(new Runnable() {

@Override

public void run() {

// TODO Auto-generated method stub

secondLeft–;

textView.setText(“” + secondLeft);

if (secondLeft < 0) {

timer.cancel();

textView.setText(“倒计时结束”);

}

}

});

}

};

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

}

上面这段代码需要注意的是由于改变UI只能在主线程中进行,因此调用了runOnUiThread方法运行在主线程。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126034.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 万字长文告诉新手如何学习Python图像处理(上篇完结 四十四) | 「Python」有奖征文

    万字长文告诉新手如何学习Python图像处理(上篇完结 四十四) | 「Python」有奖征文这篇文章是图像处理的最后一篇文章,后面我们将进入新的章节。图像处理文章主要讲解的图像处理方法包括图像几何运算、图像量化采样、图像点运算、图像形态学处理、图像增强、图像平滑、图像锐化、图像特效、图像分割、傅里叶变换与霍夫变换、图像分类等。个人感觉如果你是编程初学者、Python初学者或图像处理爱好者,这个系列真心适合你学习,并且这篇文章算是Python图像处理的学习路线,希望您喜欢。

    2022年10月14日
    1
  • dom.querySelector和document.getElementById区别

    dom.querySelector和document.getElementById区别、document.getElementById可以查询纯数字的iddom.querySelectordocument.querySelectorAll(’[id=“111”]’)在某个dom下寻找相应选择器的元素背景产品反馈项目系统模板复制之后,元素无法拖拽。经排查发现元素继承自move组件。而每个元素绑定的id竟然纯数字;复制模板之后由于项目的复杂性无法统一的对复制出…

    2022年7月15日
    15
  • 窗体在任务栏显示 MFC「建议收藏」

    窗体在任务栏显示 MFC「建议收藏」在窗体初始里面加入代码:ModifyStyleEx(0, WS_EX_APPWINDOW);

    2022年7月19日
    20
  • 暴力激活成功教程攻击工具汇总——字典很关键,肉鸡也关键

    暴力激活成功教程攻击工具汇总——字典很关键,肉鸡也关键lasercrack是一款爆力激活成功教程工具,ruby写的,现如今市面上常见的暴力工具如hydra,medusa都有着不错的激活成功教程效率。激活成功教程RDP的软件也有很多,比如ncrack和FastRDPBrut

    2022年7月2日
    36
  • 食品生物技术学计算机吗,食品生物技术「建议收藏」

    食品生物技术学计算机吗,食品生物技术「建议收藏」三、教学任务食品生物技术系主要承担本科生的课程如下:生物化学、微生物学、食品营养与卫生学、食品生物技术、实验设计与数据处理、综合性实验课等课程。承担生物化工和食品科学专业研究生高等生物化学、高等微生物学、实验动物学、现代生物技术等课程。四、主要研究方向与内容  食品生物技术系主要从事与食品生物技术方向的教学、科研及甜菜分子生物学方向的科研、研究生培养工作。1.食品分子营养与安全1.1食品分子营养学…

    2022年7月11日
    16
  • 剑指offer题目汇总_朝花夕拾题目及答案填空题

    剑指offer题目汇总_朝花夕拾题目及答案填空题目录基本都是参考别的博客和书本的代码,仅作为自己笔记用!!零、小结:一、位运算1、二进制中1的个数2、判断二进制中0的个数3.二进制高位连续0的个数二、二叉树1、二叉搜索树第k个结点2.0从上往下打印二叉树2.1二叉树打印成多行2.2按之字形顺序打印二叉树题目描述3.数据流中位数4.二叉树中和为某一值的路径5.重建二叉树6.树…

    2022年10月8日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号