欢迎来到代码驿站!

Android代码

当前位置:首页 > 移动开发 > Android代码

Android实现定时任务功能

时间:2022-07-02 10:31:19|栏目: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);

上一篇:WebView的介绍与简单实现Android和H5互调的方法

栏    目:Android代码

下一篇:Android SDK中的Support兼容包详解

本文标题:Android实现定时任务功能

本文地址:http://www.codeinn.net/misctech/206571.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有