Android使用timer和thread实现定时器

说明:
两种方法实现android定时器,定时执行任务

第一种方式:
step1:

package com.example.iosdialogdemo;

import android.os.Bundle;
import android.os.Handler;

import androidx.appcompat.app.AppCompatActivity;

import java.util.Timer;

public class TimerActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_same);

        Timer timer = new Timer();
        timer.schedule(new MyTimerTask(), 0, 1000);
    }
}

step2:

package com.example.iosdialogdemo;

import java.util.TimerTask;

public class MyTimerTask extends TimerTask {


    @Override
    public void run() {
        System.out.println("this timer click");

    }
}

第二种方式
step1:

package com.example.iosdialogdemo;

import android.os.Bundle;
import android.os.Handler;

import androidx.appcompat.app.AppCompatActivity;

public class TimerActivity extends AppCompatActivity {

    private final int Time = 1000;    //时间间隔,   单位 ms
    private int N = 0;      //用来观测重复执行
    private Handler handler = new Handler();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_same);

        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                handler.postDelayed(this, Time);
                //每隔一段时间要重复执行的代码
                N = N + 1;
                System.out.println("第" + N + "次执行");
            }
        }, Time);	//启动计时器

    }

}

第三种方式:

package com.example.iosdialogdemo;

import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;

import androidx.appcompat.app.AppCompatActivity;

import java.util.Timer;

public class TimerActivity extends AppCompatActivity {

    private static Handler mHandler = new Handler(Looper.getMainLooper()) {
        @Override
        public void handleMessage(Message msg) {
            System.out.println("this timer click");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            mHandler.sendEmptyMessage(0);

        }
    };



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_same);



        mHandler.sendEmptyMessage(0);


    }

}

end

上一篇:分布式光伏系统管理捷径——借助专业软件


下一篇:flutter报错‘/Users/xxx/.gradle/caches/journal-1/file-access.bin‘.