极客学院Android12案例---案例1--倒计时
程序员文章站
2022-08-15 18:43:50
1.保持app上的临时数据1、使用了timer计时器,并使用timer.schedule方法创建一个具体的定时任务,需要传入timeTask对象2、使用TimerTask创建一个timeTask,这个对象用于承载一个具体的线程(子线程)3、使用handler来接受Message的消息对象4、在timerTask对象中开启线程,想Message对象的arg来传递消息,并用handler的sendMessage方法来发送Message对象package com.fengray.ex038ximalay...
1.倒计时
1、使用了timer计时器,并使用timer.schedule方法创建一个具体的定时任务,需要传入timeTask对象
2、使用TimerTask创建一个timeTask,这个对象用于承载一个具体的线程(子线程)
3、使用handler来接受Message的消息对象
4、在timerTask对象中开启线程,想Message对象的arg来传递消息,并用handler的sendMessage方法来发送Message对象
package com.fengray.ex038ximalaya;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.util.Timer;
import java.util.TimerTask;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private EditText inputTime;
private TextView showinfo;
private Button getTime,starttime,endTime;
private int i=0;
private Timer timer;
private TimerTask timetask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化数据
initdatas();
}
public void initdatas(){
inputTime=findViewById(R.id.inputTime);
showinfo=findViewById(R.id.showTime);
starttime=findViewById(R.id.startTime);
endTime=findViewById(R.id.endTime);
getTime=findViewById(R.id.getTime);
getTime.setOnClickListener(this);
starttime.setOnClickListener(this);
endTime.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.getTime:
showinfo.setText(inputTime.getText().toString());
i=Integer.parseInt(inputTime.getText().toString());
break;
case R.id.startTime:
startTime();
break;
case R.id.endTime:
endTime();
break;
default:
break;
}
}
//handle用于在线程间传值
private Handler mHandler=new Handler(){
public void handleMessage(Message message){
showinfo.setText(message.arg1+"");//需要将messsage的arg1对象转化为字符串
startTime();//再次启动,向handler发送信息
}
};
//开始时间
public void startTime(){
timer=new Timer();
//创建一个timeTask任务
timetask=new TimerTask() {
@Override
public void run() {
i--;
Message message=mHandler.obtainMessage();//获取一个message空对象
message.arg1=i;//给message对象的arg1赋值
mHandler.sendMessage(message);//将这个message发送给handler对象
}
};
timer.schedule(timetask, 1000);
}
//停止时间
public void endTime(){
timer.cancel();//清楚计时器
}
}
本文地址:https://blog.csdn.net/weixin_43745804/article/details/107934083
下一篇: Android 插件化开发 代码范例