当前位置: 首页 > article >正文

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


http://www.kler.cn/a/379072.html

相关文章:

  • uniapp 使用vue/pwa
  • 2024年大厂AI大模型面试题精选与答案解析
  • 视频去水印怎么办?两种方法教会你
  • liunx CentOs7安装MQTT服务器(mosquitto)
  • MySQL 数据库备份与恢复
  • Vue 3.0 新特性
  • 【数据结构】堆:建堆/向下调整/上向调整/堆排序/TOK问题
  • 数组、字符串、链表和队列的指针的定义
  • CQ社区版 v2024.10 | 支持k8s、helm部署!
  • SpringBoot中扩展Druid的过滤器实现完整的SQL打印
  • 学习笔记:黑马程序员JavaWeb开发教程(2024.10.27)
  • 心情追忆-AI分析报错
  • sklearn|机器学习:决策树(一)
  • 详解RabbitMQ三种队列类型
  • 两秒掌握git
  • laravel: Breeze 和 Blade, 登录 注册等
  • 使用 Elasticsearch 进行语义搜索
  • vue3-ref 和 reactive
  • Android Livedata源码解析
  • JVM问题排查分析
  • 探索开源语音识别的未来:高效利用先进的自动语音识别技术20241030
  • 刘艳兵-DBA016-在您的数据库中,SALES表存在于SH用户中,并且启用了统一审计。作为DBA,您成功执行了以下指令:
  • 《Python网络安全项目实战》项目2 Python基础练习_总复习(1)
  • Vscode使用launch.json进行传参调试代码
  • 进程间通信Linux
  • 如何更新已经发布的 NPM 组件库