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中dip、dp、sp、pt和px的区别详解

    Android中dip、dp、sp、pt和px的区别详解

    本篇文章是对Android中dip、dp、sp、pt和px的区别进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • Android 多线程处理之多线程详解

    Android 多线程处理之多线程详解

    本文主要介绍Android 多线程处理的知识资料,这里整理下来详细的知识,和简单代码实现和实现效果图,有需要的朋友可以参考下
    2016-09-09
  • Android中的Bmob移动后端云服务器功能

    Android中的Bmob移动后端云服务器功能

    这里介绍一个移动后端云服务器平台bmob,这不仅可以实现云数据库储存,还可以获取手机验证等,随时随地都很轻松,下面写一个小demo,实现一个登陆注册功能,认识增删查改
    2018-01-01
  • Android中Handler与Message的简单实例

    Android中Handler与Message的简单实例

    这篇文章主要介绍了Android中Handler与Message的简单实例的相关资料,这里提供实例来说明线程Handler与message 的结合使用,需要的朋友可以参考下
    2017-08-08
  • Android实现简单底部导航栏 Android仿微信滑动切换效果

    Android实现简单底部导航栏 Android仿微信滑动切换效果

    这篇文章主要为大家详细介绍了Android实现简单底部导航栏,Android仿微信滑动切换效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • android 如何获取MCC/MNC控制小区广播的开启

    android 如何获取MCC/MNC控制小区广播的开启

    获取MCC/MNC以便控制小区广播的开启下面针对于单卡、双卡,为大家详细介绍下具体的实现,感兴趣的朋友可以参考下哈
    2013-06-06
  • Android中的JNI数组操作教程

    Android中的JNI数组操作教程

    这篇文章主要给大家介绍了关于Android中JNI数组操作的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • Android开发App启动流程与消息机制详解

    Android开发App启动流程与消息机制详解

    这篇文章主要为大家介绍了Android开发App启动流程与消息机制详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Android fragment实现按钮点击事件的示例讲解

    Android fragment实现按钮点击事件的示例讲解

    下面小编就为大家分享一篇Android fragment实现按钮点击事件的示例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • Android Studio实现音乐播放器

    Android Studio实现音乐播放器

    这篇文章主要为大家详细介绍了Android Studio实现音乐播放器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11

最新评论