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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 简图记录-曾国藩家训 观后感「建议收藏」

    简图记录-曾国藩家训 观后感「建议收藏」简图记录 总结~材料 郦波教授的百家讲坛 和 部分相关书籍  一个人疑惑的时候,总是希望通求知如过阅读找到自己的答案,读史可以使人明智,历史总是有借鉴意义,相对于空谈鸡汤无疑更有说服力。我认为向周围的人学习是个人成长一个非常重要的手段,周围的人都是真实的而且在一定范围是可交流讨论的,相对一些当代的名人 他们的事迹往往都是经过加工 或 胡编 鸡汤意味更浓一些,那么另外一条路就是找一些古代的贤…

    2022年6月4日
    35
  • touch-screen_FloatingActionButton

    touch-screen_FloatingActionButton在做练习时,触控失灵,看源码后fanx直接在init

    2022年8月30日
    5
  • 数仓分层(ODS、DWD、DWS、DWT、ADS)和数仓建模

    数仓分层(ODS、DWD、DWS、DWT、ADS)和数仓建模文章目录一、数仓分层数仓概念ODS(原始数据层)做了哪些事DWD(明细数据层)做了哪些事DWS(服务数据层)做了哪些事DWT(主题数据层)做了哪些事ADS(应用数据层)做了哪些事二、数仓建模常用的建模工具ODS层DWD层DWS层DWT层ADS层一、数仓分层数仓概念什么是数仓:数据仓库是为企业所有决策制定过程,提供所有系统数据支持的战略集合。通过对数据仓库中数据的分析,可以帮助企业改进业务流程、控制成本、提高产品质量等。数据仓库并不是数据的最终目的地,而是为数据最终的目的地做好准备。这些准

    2022年6月26日
    64
  • SO库版本号管理

    SO库版本号管理编写SO库文件时可以输入版本号调用SO库文件中特定的函数可以输出版本号

    2022年6月17日
    47
  • Android直播开发之旅(10):AndroidUSBCamera,UVCCamera开发通用库(支持开启多路摄像头)[通俗易懂]

    Android直播开发之旅(10):AndroidUSBCamera,UVCCamera开发通用库(支持开启多路摄像头)[通俗易懂]AndroidUSBCamera基于[saki4510t/UVCCamera](https://github.com/saki4510t/UVCCamera)开发,该项目对USBCamera(UVC设备)的使用和视频数据采集进行了高度封装,能够帮助开发者通过几个简单的API实现USBCamera设备的检测、连接、预览和音视频数据采集,最重要的是手机无需root,只需支持otg功能即可驱………

    2022年8月13日
    9
  • Ubuntu 22.04 LTS 新系统环境配置[通俗易懂]

    Ubuntu 22.04 LTS 新系统环境配置[通俗易懂]目录一、安装wps二、截图工具flameshot三、必备中文输入法fcitx-googlepinyin安装四、python3环境五、解决ssh环境恢复遇到问题搜索wpslinux版本,下载到最新版本,进入到deb包下载目录,执行安装命令。WPSOffice2019forLinux-支持多版本下载_WPS官方网站WPSOfficeForLinux,支持不同格式多版本WPSForLinux版下载,实现多人在线协同办公。https://linux.wps.cn/sudodpkg-ixxx

    2025年9月4日
    8

发表回复

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

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