public class MainActivity extends AppCompatActivity implements View.OnClickListener {
TextView tv_stop,tv_pause,tv_restart,tv_start,tv_num;
MyHandler myHandler;
Timer timer;
private boolean isOnpause;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
myHandler=new MyHandler(this);
timer=new Timer();
}
private void initView() {
tv_stop=findViewById(R.id.tv_stop);
tv_pause= findViewById(R.id.tv_pause);
tv_restart=findViewById(R.id.tv_restart);
tv_start=findViewById(R.id.tv_start);
tv_num=findViewById(R.id.tv_num);
tv_stop.setOnClickListener(this);
tv_pause.setOnClickListener(this);
tv_restart.setOnClickListener(this);
tv_start.setOnClickListener(this);
}
public int countDown=-1;
EmptyMessageTask mCountdownTask;
@Override
public void onClick(View view) {
isOnpause=false;
switch (view.getId()){
case R.id.tv_start:
countDown=10;
startTask(MsgWhat.MSG_PREPARE_TIME);
break;
case R.id.tv_stop:
countDown=0;
stopMsg();
break;
case R.id.tv_pause:
startTask(MsgWhat.MSG_STOP_TIME);
break;
case R.id.tv_restart:
startTask(MsgWhat.MSG_PREPARE_TIME);
break;
}
}
public void startTask(int flag){
if (mCountdownTask!=null){
mCountdownTask.cancel();
}
if (timer==null){
timer=new Timer();
}
mCountdownTask = new EmptyMessageTask(myHandler, flag);
timer.schedule(mCountdownTask, 1000, 1000);
}
public void stopMsg(){
if (timer != null) {
timer.cancel();
timer=null;
}
if (mCountdownTask != null) {
mCountdownTask.cancel();
mCountdownTask=null;
}
}
private class MyHandler extends Handler {
private WeakReference<MainActivity> activityWeakReference ;
public MyHandler(MainActivity activity) {
activityWeakReference = new WeakReference<MainActivity>(activity) ;
}
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg) ;
MainActivity activity = activityWeakReference.get() ;
if (activity == null) {
return;
}
switch (msg.what){
case MsgWhat.MSG_PREPARE_TIME:
if (countDown>0){
countDown--;
}
tv_num.setText(""+countDown);
break;
default:
break;
}
}
}
@Override
protected void onDestroy() {
super.onDestroy();
myHandler.removeCallbacksAndMessages(null);
}
}
android 定时器 开始 继续 暂停 停止 (2)
最新推荐文章于 2025-09-10 16:45:12 发布
本文详细介绍了如何在Android应用程序中使用定时器进行操作,包括如何启动、继续、暂停和停止定时任务。内容涵盖Java语言在Android开发中的应用,为开发者提供了实用的代码示例。
4732

被折叠的 条评论
为什么被折叠?



