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方法运行在主线程。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Log4net中ConversionPattern的代码解释[通俗易懂]

    Log4net中ConversionPattern的代码解释[通俗易懂]      layout type=”log4net.Layout.PatternLayout”>        param name=”Header” value=”———————–header————————–” />        param name=”Footer” value=”——————–

  • navicat15 最新激活码【2021最新】

    (navicat15 最新激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • 笔记7 正则(grep、sed、awk工具)

    笔记7 正则(grep、sed、awk工具)

  • SpringBoot 实现热部署[通俗易懂]

    SpringBoot 实现热部署[通俗易懂]SpringBoot实现热部署1、添加依赖&lt;!–热部署–&gt;&lt;dependency&gt;&lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;&lt;artifactId&gt;spring-boot-devtools&lt;/artifactId&gt;&lt;ver…

  • mac如何装windows系统_bootcamp您的磁盘未能分区

    mac如何装windows系统_bootcamp您的磁盘未能分区问题:启动磁盘不能被分区或恢复成单个分区苹果电脑装了双系统,但是一直用的mac系统,所以打算把windows卸载。看到网上说直接用Bootcamp助理卸载就行,但是点“继续”的时候出现问题:启动磁盘不能被分区或恢复成单个分区。接下来就是要解决这个问题啦!可以看到我现在有三个盘,MachintoshHD为mac系统所在盘,这是我要保留的,另外两个是装windows分配的盘,所以需要卸载这…

  • spidermonkey php,javascript SpiderMonkey中的函数序列化如何进行_基础知识[通俗易懂]

    spidermonkey php,javascript SpiderMonkey中的函数序列化如何进行_基础知识[通俗易懂]在Javascript中,函数可以很容易的被序列化(字符串化),也就是得到函数的源码.但其实这个操作的内部实现(引擎实现)并不是你想象的那么简单.SpiderMonkey中一共使用过两种函数序列化的技术:一种是利用反编译器(decompiler)将函数编译后的字节码反编译成源码字符串,另一种是在将函数编译成字节码之前就把函数源码压缩并存储下来,用到的时候再解压还原.如何进行函数序列化在Spider…

    2022年10月10日

发表回复

您的电子邮箱地址不会被公开。

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