安卓循环遍历计时器
计时器循环遍历
计时器的使用 我习惯两种方式如下:
第一种使用 handler:
1,初始化 声明
public static final int REGULAR_TIME = 1000; //1秒 时间间隔private Handler mUiHandler;private int index=0;Runnable runnable = new Runnable() {@Overridepublic void run() {//要执行的任务aaa();mUiHandler.postDelayed(this , REGULAR_TIME); //循环执行}};
2,初始化
mUiHandler = new Handler(Looper.getMainLooper(), new Handler.Callback() {@Overridepublic boolean handleMessage(@NonNull Message msg) {Log.d("info","发送消息");return false;}});
3,执行方法
findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//可以先执行一次aaa();}});private void aaa() {if(index==10){Log.d("info","停止遍历");mUiHandler.removeCallbacks(runnable);}else {Log.d("info","叠加数据 继续遍历");index++;//1小时后开启定时循环执行mUiHandler.postDelayed(runnable,REGULAR_TIME);}
}
ok 以上就是hanlder的使用。
第二种是使用 timer和TimerTask相互结合使用如下:
1, 声明
private TimerTask mTimerTask;private Timer mTimer;private int currentTime = 0;
2,初始化方法
private void initTimer() {//30s倒计时mTimerTask = new TimerTask() {@Overridepublic void run() {currentTime = currentTime + 1;Log.d("mawl", "视频界面时间记录定时器==" + currentTime);if (tv_time != null) {runOnUiThread(new Runnable() {@Overridepublic void run() {tv_time.setText(currentTime + "秒");}});}}};mTimer = new Timer();}
3,执行计时方法
//切换每个的组件时clear 为0protected void initCurrentTime() {currentTime = 0;startTime();}
/*** 开始倒计时*/protected void startTime() {//倒计时时间destroyTimer();initTimer();mTimer.schedule(mTimerTask, 0, 1000);}
4,在ondestory时候执行销毁:
/*** destory上次使用的*/protected void destroyTimer() {if (mTimer != null) {mTimer.cancel();mTimer = null;}if (mTimerTask != null) {mTimerTask.cancel();mTimerTask = null;}}
ok 以上就是我的两个计时方法。