Home Java javaTutorial Analyze the usage and examples of Timer and TimerTask in Java in Android

Analyze the usage and examples of Timer and TimerTask in Java in Android

Jan 11, 2017 pm 04:10 PM

In development, we sometimes have the need to perform a certain task at a fixed interval. For example, if the controls on the UI need to change over time, we can use the timer tool classes provided by Java, namely Timer and TimerTask.

Timer is an ordinary class with several important methods; while TimerTask is an abstract class with an abstract method run(), which is similar to the run() method in threads. We use Timer Create an object of his, and then use the schedule method of this object to complete this interval operation.

The schedule method has three parameters

The first parameter is an object of type TimerTask. The run() method we implement TimerTask is a task to be executed periodically;

The second parameter has two types, the first is long type, indicating how long it will take to start execution, and the other is Date type, indicating how long it will take to start execution;

The third parameter is the execution cycle, which is of long type.

The schedule method also has an execution overload with two parameters. The first parameter is still a TimerTask, and the second parameter is expressed as a long to indicate how long it will take to execute it. If it is Date, it indicates a certain time. Executed once.

Timer is a thread. Use the schedule method to complete the scheduling of TimerTask. Multiple TimerTask can share a Timer. That is to say, the Timer object calls the schedule method once to create a thread, and after calling the schedule once, the TimerTask is If the loop continues indefinitely, use Timer's cancel() to stop the operation. Of course, after the same Timer executes the cancel() method once, all Timer threads will be terminated.

Usage

//true 说明这个timer以daemon方式运行(优先级低,程序结束timer也自动结束) 
java.util.Timer timer = new java.util.Timer(true); 
  
TimerTask task = new TimerTask() { 
 public void run() { 
 //每次需要执行的代码放到这里面。 
 } 
}; 
  
//以下是几种调度task的方法: 
  
//time为Date类型:在指定时间执行一次。 
timer.schedule(task, time); 
  
//firstTime为Date类型,period为long,表示从firstTime时刻开始,每隔period毫秒执行一次。 
timer.schedule(task, firstTime, period); 
  
//delay 为long类型:从现在起过delay毫秒执行一次。 
timer.schedule(task, delay); 
  
//delay为long,period为long:从现在起过delay毫秒以后,每隔period毫秒执行一次。 
timer.schedule(task, delay, period);
Copy after login

Sample code:

import android.app.Activity; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.Message; 
  
import java.util.Timer; 
import java.util.TimerTask; 
  
public class TimerTaskActivity extends Activity { 
  
 private Timer mTimer; 
  
 @Override
 protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 // init timer 
 mTimer = new Timer(); 
 // start timer task 
 setTimerTask(); 
 } 
  
 @Override
 protected void onDestroy() { 
 super.onDestroy(); 
 // cancel timer 
 mTimer.cancel(); 
 } 
  
 private void setTimerTask() { 
 mTimer.schedule(new TimerTask() { 
  @Override
  public void run() { 
  Message message = new Message(); 
  message.what = 1; 
  doActionHandler.sendMessage(message); 
  } 
 }, 1000, 1000/* 表示1000毫秒之後,每隔1000毫秒執行一次 */); 
 } 
  
 /** 
 * do some action 
 */
 private Handler doActionHandler = new Handler() { 
 @Override
 public void handleMessage(Message msg) { 
  super.handleMessage(msg); 
  int msgId = msg.what; 
  switch (msgId) { 
  case 1: 
   // do some action 
   break; 
  default: 
   break; 
  } 
 } 
 }; 
}
Copy after login

The above is the entire content of this article. I hope it will be helpful to everyone's learning, and I also hope that everyone will join the PHP Chinese website.

For more articles that analyze the usage and examples of Timer and TimerTask in Java in Android, please pay attention to the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How does Java's classloading mechanism work, including different classloaders and their delegation models? How does Java's classloading mechanism work, including different classloaders and their delegation models? Mar 17, 2025 pm 05:35 PM

Java's classloading involves loading, linking, and initializing classes using a hierarchical system with Bootstrap, Extension, and Application classloaders. The parent delegation model ensures core classes are loaded first, affecting custom class loa

How do I implement multi-level caching in Java applications using libraries like Caffeine or Guava Cache? How do I implement multi-level caching in Java applications using libraries like Caffeine or Guava Cache? Mar 17, 2025 pm 05:44 PM

The article discusses implementing multi-level caching in Java using Caffeine and Guava Cache to enhance application performance. It covers setup, integration, and performance benefits, along with configuration and eviction policy management best pra

How can I implement functional programming techniques in Java? How can I implement functional programming techniques in Java? Mar 11, 2025 pm 05:51 PM

This article explores integrating functional programming into Java using lambda expressions, Streams API, method references, and Optional. It highlights benefits like improved code readability and maintainability through conciseness and immutability

How can I use JPA (Java Persistence API) for object-relational mapping with advanced features like caching and lazy loading? How can I use JPA (Java Persistence API) for object-relational mapping with advanced features like caching and lazy loading? Mar 17, 2025 pm 05:43 PM

The article discusses using JPA for object-relational mapping with advanced features like caching and lazy loading. It covers setup, entity mapping, and best practices for optimizing performance while highlighting potential pitfalls.[159 characters]

How do I use Maven or Gradle for advanced Java project management, build automation, and dependency resolution? How do I use Maven or Gradle for advanced Java project management, build automation, and dependency resolution? Mar 17, 2025 pm 05:46 PM

The article discusses using Maven and Gradle for Java project management, build automation, and dependency resolution, comparing their approaches and optimization strategies.

How do I use Java's NIO (New Input/Output) API for non-blocking I/O? How do I use Java's NIO (New Input/Output) API for non-blocking I/O? Mar 11, 2025 pm 05:51 PM

This article explains Java's NIO API for non-blocking I/O, using Selectors and Channels to handle multiple connections efficiently with a single thread. It details the process, benefits (scalability, performance), and potential pitfalls (complexity,

How do I create and use custom Java libraries (JAR files) with proper versioning and dependency management? How do I create and use custom Java libraries (JAR files) with proper versioning and dependency management? Mar 17, 2025 pm 05:45 PM

The article discusses creating and using custom Java libraries (JAR files) with proper versioning and dependency management, using tools like Maven and Gradle.

How do I use Java's sockets API for network communication? How do I use Java's sockets API for network communication? Mar 11, 2025 pm 05:53 PM

This article details Java's socket API for network communication, covering client-server setup, data handling, and crucial considerations like resource management, error handling, and security. It also explores performance optimization techniques, i

See all articles