欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

极客学院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();//清楚计时器
    }
}

极客学院Android12案例---案例1--倒计时

本文地址:https://blog.csdn.net/weixin_43745804/article/details/107934083