public class TimeActivity extends AppCompatActivity {
private Timer timer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
timer = new Timer(true);
timer.schedule(timerTask, 1000, 1000); //延时1000ms后执行,1000ms执行一次
}
TimerTask timerTask = new TimerTask() {
public void run() {
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what==1){
//回到主线程执行结束操作
Log.e("=====", "结束计时");
}
}
};
}
代码很简单,先创建了 handler ,执行在主线程的操作;其次创建了 TimerTask ,在里面执行发送消息的操作;最后,在 onCreate() 方法中初始化 Timer 对象并开始开始执行方法;
public class TimeActivity extends AppCompatActivity {
private Timer mTimer; //计时器,每1秒执行一次任务
private MyTimerTask mTimerTask; //计时任务,判断是否未操作时间到达3s
private long mLastActionTime; //上一次操作时间
private Button button1;//重新开始计时按钮
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = findViewById(R.id.button1);
//重新计时按钮
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mLastActionTime = System.currentTimeMillis();
}
});
//开始计时
startTimer();
}
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 1) {
//回到主线程执行结束操作
Log.e("=====", "结束计时");
}
}
};
private class MyTimerTask extends TimerTask {
@Override
public void run() {
//3s未操作,则结束计时
if (System.currentTimeMillis() - mLastActionTime > 3000) {
//结束计时
removeTimer();
// 停止计时任务
stopTimer();
}
}
}
//开始计时
private void startTimer() {
mTimer = new Timer(true);
mTimerTask = new MyTimerTask();
mTimer.schedule(mTimerTask, 0, 1000); //延时1000ms后执行,1000ms检查一次
// 初始化上次操作时间为登录成功的时间
mLastActionTime = System.currentTimeMillis();
}
//倒计时完毕的操作
private void removeTimer() {
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
// 停止计时任务
private void stopTimer() {
mTimer.cancel();
}
}
上面代码也很简单,主要有:
结合上面的内容看代码应该非常简单了~~