首页 > 其他分享 >Android使用timer和thread实现定时器

Android使用timer和thread实现定时器

时间:2024-11-01 17:47:17浏览次数:3  
标签:thread void timer public Handler import Android os android

说明: 两种方法实现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

标签:thread,void,timer,public,Handler,import,Android,os,android
From: https://blog.51cto.com/u_15359293/12428297

相关文章

  • ThreadLocal的使用以及原理
    ThreadLocal的使用以及原理  概要  ThreadLocal是java提供的一个方便对象在本线程内不同方法中进行传递和获取的类。用它定义的变量,仅在本线程中可见和维护,不受其他线程的影响,与其他线程相互隔离。  一、ThreadLocal能解决什么问题?  当涉及一个对象需要在很多......
  • 【Java】ThreadLocal详解
    引言在多线程编程中,如何安全地共享数据是一个重要的课题。Java提供了ThreadLocal类,以便在每个线程中维护线程局部变量,允许每个线程拥有自己的独立变量副本。本文将探讨ThreadLocal的工作原理、使用场景以及一些最佳实践。1.什么是ThreadLocal?ThreadLocal是Java......
  • 浅谈android设备sysfs接口硬件调用之手电筒,马达,呼吸灯
    这篇文章我们来介绍下几个sysfs接口的调用。事实上,驱动接口一般有两种方式调用:ioctl()和read()/write()。前一种要么能读懂内核源码,要么照抄strace用户空间驱动得到的调用,因此不做研究。需要注意的是,由于安卓内核碎片化过于严重,各个厂商之间的代码差异过大,因此直接和内核交互来......
  • APP压力测试--Android sdk安装及虚拟机配置
    电脑系统:windows111、Androidsdk的下载安装( https://www.androiddevtools.cn/#google_vignette )如图:Androidsdk工具--SDKTools,选择windows对应的安装包,我下载的.zip包解压zip包(如解压到D盘),解压后目录如图2、AndroidSDKManager配置软件包双击SDKManager.exe‌......
  • 基于node.js+vue基于Android的答疑预约系统的设计与实现前(开题+程序+论文)计算机毕业设
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容选题背景关于答疑预约的研究,现有研究主要集中在传统的线下答疑预约或者基于网页端的答疑预约方式,专门针对基于Android平台的答疑预约系统的研究较少。随着移动设备的......
  • 基于node.js+vue基于Android的服装搭配APP(开题+程序+论文)计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于服装搭配的研究,现有研究主要以线下实体店搭配建议或时尚杂志推荐为主,专门针对基于Android平台开发服装搭配APP的研究较少。在国内外,虽然有一些关于......
  • Android本地广播工具类
    LocalBroadcastUtilimportandroid.content.BroadcastReceiverimportandroid.content.Contextimportandroid.content.Intentimportandroid.content.IntentFilterimportandroid.os.Bundleimportandroidx.localbroadcastmanager.content.LocalBroadcastManager/**......
  • Android APP如何获取设备网线插拔的状态
    我们的Android设备终端是支持有线接入的,现在有个需求是查询设备是否接入有线,查了下Android标准API没有找到查询有线接入与否的方法。后来与做系统的同事沟通,他告诉我可以通过cat/sys/class/net/eth0/operstate命令获取,UP表示接入,DOWN表示未接入。然后顺便扩展查询了下相关资......
  • 基于安卓Android的自来水收费系统APP(源码+文档+部署+讲解)
    !!!!!!!!!选题不知道怎么选不清楚自己适合做哪块内容都可以免费来问我会持续一直更新下去有问必答一键收藏关注不迷路源码获取:https://pan.baidu.com/s/1aRpOv3f2sdtVYOogQjb8jg?pwd=jf1d提取码:jf1d !!!!!!!!!项目介绍随着智能水务管理的发展和用户对便捷服务的需求增加,一个功能全......
  • Java多线程--Thread类的那些事3.--线程的6中状态和sleep()和 join()
      一.sleep()方法  首先在Thead类中有一个静态的sleep()方法,可以让线程进入到休眠状态即TEMD-WAITING状  在调用sleep()方法时需要注意的是在哪个线程里面调用sleep()方法,哪个线程就会进入阻塞状态.,在这个线程中的其他线程不会发生阻塞,只有当休眠时间到来这个......