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初级:基础知识-字符串

    2021年10月6日
    44
  • 我是如何学习Android源码的

    我是如何学习Android源码的一连很长时间(从2017/06/09到2017/06/26)都在研究蓝牙,而且这只是文章发表的时间,再加上组织文章和研究的时间,不知不觉中就坚持这么久………,也写了蓝牙的三篇博客,而且篇幅很长如下:在这里就不放文章链接了,有需要的在我的文章中搜索即可,现在,是时候放空一下,给自己充充电了,来张美景,欣赏一下北京的晚霞。言归正传,先放上Android源码连接地址Android源码,至于研究源码的好处,

    2022年5月3日
    51
  • MySQL读写分离的原理

    MySQL读写分离的原理1.为什么要实现MySQL的读写分离?因为实际上大多是互联网公司,一些网站或者是app,其实都是读多写少,所以针对这个情况,就是写请求是一个主库,但是主库挂多个从库,然后从多个从库来读,这样可以提高MySQL的并发。2.如何实现MySQL的读写分离?就是基于主从复制架构,简单就是之搞一个主库,然后主库挂多个从库,我们单单只是写主库,然后主库会自动把数据给同步到从库上去。…

    2022年5月4日
    40
  • TASK异步进程处理场景[通俗易懂]

    TASK异步进程处理场景

    2022年2月13日
    46
  • adb 环境变量配置 无效

    今天adb日常抽风。怎么搞就是打不开。由于是新做的系统。所以还没配置adb的环境变量。要打adb还要切到指定文件夹下太麻烦,于是就打算设置下adb的系统变量。结果设置了很多次。发现在cmd中打adb还是提示不是内部命令。也就是说提示我系统变量没有添加成功。重启了几遍有好好仔细检查了下分好和路径。都没问题。最后突然灵光一闪。Win+R输入cmd木有直接回车进入命令行。而是右键了上面的cmd…

    2022年4月9日
    38
  • 关于在网页拼接时出现:“Uncaught SyntaxError: missing ) after argument list”的真凶在哪里

    关于在网页拼接时出现:“Uncaught SyntaxError: missing ) after argument list”的真凶在哪里

    2022年2月20日
    71

发表回复

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

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