本文实例为大家分享了Android中使用定时器的三种方法,供大家参考,具体内容如下图示:
因为都比较简单,所以就直接贴代码(虑去再次点击停止的操作),有个全局的Handler负责接收消息更新UI第一种方法:Thread.sleep();方法Runnable runnable = new Runnable() {@Override public void run() {while (true) {mHandler.sendEmptyMessage(0);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}};new Thread(runnable).start();}
第二种方法:Handler的postDelay()方法final Runnable runnable = new Runnable() {@Override public void run() {if (isStart2) {mHandler.sendEmptyMessage(0);mHandler.postDelayed(this, 1000);}}};mHandler.postDelayed(runnable, 1000);}
第三种:Timer和TimerTaskprivate Timer timer = new Timer();private TimerTask timerTask = new TimerTask() {@Override public void run() {mHandler.sendEmptyMessage(0);}};timer.schedule(timerTask, 1000, 1000);
总的来说第三种方法最方便,不易出错,第二种容易忘记添加出发事件.
贴一下完整代码:
布局文件
MainActivitypackage com.brioal.timertest;
import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.TextView;
import java.text.SimpleDateFormat;import java.util.Timer;import java.util.TimerTask;
public class MainActivity extends AppCompatActivity {private TextView mTv;private Handler mHandler = new Handler() {@Override public void handleMessage(Message msg) {super.handleMessage(msg);//收到消息后显示当前时间long current = System.currentTimeMillis();SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");String time = dateFormat.format(current);mTv.setText(time);}};private Timer timer = new Timer();private TimerTask timerTask = new TimerTask() {@Override public void run() {mHandler.sendEmptyMessage(0);}};private Thread thread1;private boolean isStart1 = false;private boolean isStart2 = false;private boolean isStart3 = false;
@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTv = (TextView) findViewById(R.id.main_tv);}
//Thread方法public void Method1(View view) {Runnable runnable = new Runnable() {@Override public void run() {while (isStart1) {mHandler.sendEmptyMessage(0);try {Thread.sleep(1000);
} catch (InterruptedException e) {e.printStackTrace();}}
}};if (isStart1) {isStart1 = false;} else {isStart1 = true;thread1 = new Thread(runnable);thread1.start();}}
public void Method2(View view) {
final Runnable runnable = new Runnable() {@Override public void run() {if (isStart2) {mHandler.sendEmptyMessage(0);mHandler.postDelayed(this, 1000);}}};if (isStart2) {isStart2 = false;} else {mHandler.postDelayed(runnable, 1000);isStart2 = true;}}
public void Method3(View view) {if (isStart3) {timer.cancel();isStart3 = false;} else {timer.schedule(timerTask, 1000, 1000);isStart3 = true;}}}总结完了,完整Github地址:TimerTest更多内容请点击专题《java定时功能》进行学习。
以上就是定时器使用方法的全部内容,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:Android使用Handler实现定时器与倒计时器功能Android定时器和倒计时实现淘宝秒杀功能详解Android实现定时器的几种方法Android 定时器实现图片的变换Android定时器Timer的停止和重启实现代码Android实现定时器的五种方法实例详解Android 实现定时器的四种方式总结及实现实例Android定时器实现的几种方式整理及removeCallbacks失效问题解决基于Android中实现定时器的3种解决方法Android定时器实现定时执行、重复执行、定时重复执行、定次数执行的多种方式
