Android实现定时任务功能

 更新时间:2022年01月18日 17:26:36   作者:最萌小熊猫  
这篇文章主要为大家详细介绍了Android实现定时任务功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Android实现定时任务功能的具体代码,供大家参考,具体内容如下

1、采用Handle与线程的sleep(long)方法

(1)、定义一个Handler类,用于处理接受到的Message。

Handler handler = new Handler() {  
    public void handleMessage(Message msg) {  
        // 要做的事情  
        super.handleMessage(msg);  
    }  
}; 

(2)、新建一个实现Runnable接口的线程类,如下:

public class MyThread implements Runnable {  
    @Override  
    public void run() {  
        // TODO Auto-generated method stub  
        while (true) {  
            try {  
                Thread.sleep(10000);// 线程暂停10秒,单位毫秒  
                Message message = new Message();  
                message.what = 1;  
                handler.sendMessage(message);// 发送消息  
            } catch (InterruptedException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
        }  
    }  
}

(3)、在需要启动线程的地方加入下面语句:

new Thread(new MyThread()).start();  

2、采用Handler的postDelayed(Runnable, long)方法

(1)、定义一个Handler类

Handler handler=new Handler();  
 
Runnable runnable=new Runnable() {  
    @Override  
    public void run() {  
        // TODO Auto-generated method stub  
        //要做的事情  
        handler.postDelayed(this, 2000);  
    }  
}; 

(2)、启动

handler.postDelayed(runnable, 2000);

3、用Handler与timer及TimerTask结合的方法

(1)、定义定时器、定时器任务及Handler句柄

private final Timer timer = new Timer();  
private TimerTask task;  
Handler handler = new Handler() {  
    @Override  
    public void handleMessage(Message msg) {  
        // TODO Auto-generated method stub  
        // 要做的事情  
        super.handleMessage(msg);  
    }  
}; 

(2)、初始化计时器任务

task = new TimerTask() {  
    @Override  
    public void run() {  
        // TODO Auto-generated method stub  
        Message message = new Message();  
        message.what = 1;  
        handler.sendMessage(message);  
    }  
}; 

(3)、启动和关闭定时器

timer.schedule(task, 2000, 3000);   
timer.cancel(); 

4、采用AlarmManger实现长期精确的定时任务

(1)、服务类:

public class HorizonService extends Service {
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                Log.d("TAG", "打印时间: " + new Date().
                        toString());
            }
        }).start();
        AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);
        int five = 5000; // 这是5s
        long triggerAtTime = SystemClock.elapsedRealtime() + five;
        Intent i = new Intent(this, AlarmReceiver.class);
        PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, 0);
        manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime, pi);
        return super.onStartCommand(intent, flags, startId);
    }
}

(2)、广播接受器

public class AlarmReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Intent i = new Intent(context, HorizonService.class);
        context.startService(i);
    }
}

(3)、启动定时任务:

Intent intent = new Intent(this,HorizonService.class);
startService(intent);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android Studio使用教程(三):常用快捷键

    Android Studio使用教程(三):常用快捷键

    这篇文章主要介绍了Android Studio使用教程(三):常用快捷键,本文还同时介绍了自动导包设置,需要的朋友可以参考下
    2015-05-05
  • ViewDragHelper实现QQ侧滑效果

    ViewDragHelper实现QQ侧滑效果

    这篇文章主要为大家详细介绍了ViewDragHelper实现QQ侧滑效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Android Apk去掉签名以及重新签名的方法

    Android Apk去掉签名以及重新签名的方法

    这篇文章主要介绍了Android Apk去掉签名以及重新签名的方法的相关资料,Android开发中很重要的一部就是用自己的密钥给Apk文件签名,需要的朋友可以参考下
    2016-12-12
  • 关于Android 4.4相机预览、录像花屏的问题的解决方法

    关于Android 4.4相机预览、录像花屏的问题的解决方法

    这篇文章主要介绍了关于Android 4.4相机预览、录像花屏的问题的解决方法,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2016-12-12
  • Android实现自定义飘雪效果

    Android实现自定义飘雪效果

    随着冬季的脚步越来越远,南方的我今年就看了一场雪,下一场雪遥遥无期,那我们来实现一个自定义的 View,它能模拟雪花飘落的景象,所以本文给大家介绍了基于Android实现自定义飘雪效果,感兴趣的朋友可以参考下
    2024-01-01
  • Android自定义View实现数字密码锁

    Android自定义View实现数字密码锁

    这篇文章主要为大家详细介绍了Android自定义View实现数字密码锁,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Android自定义控件样式实例详解

    Android自定义控件样式实例详解

    这篇文章主要介绍了Android自定义控件样式的方法,结合实例形式分析说明了常见样式的含义与使用方法,需要的朋友可以参考下
    2016-01-01
  • Android中判断手机是否联网实例

    Android中判断手机是否联网实例

    这篇文章主要介绍了Android中判断手机是否联网实例,包括xml配置文件及功能代码的实现,需要的朋友可以参考下
    2014-10-10
  • 关于androidstuio导入系统源码的问题

    关于androidstuio导入系统源码的问题

    小编最近在做系统源码导出来的小项目,在导入androidstudio过程中遇到过一些问题,本文以Schedule power on off为例给大家详细介绍,需要的朋友参考下吧
    2021-06-06
  • Android带刷新时间显示的PullToRefresh上下拉刷新

    Android带刷新时间显示的PullToRefresh上下拉刷新

    这篇文章主要为大家详细介绍了Android带刷新时间显示的PullToRefresh上下拉刷新,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12

最新评论