android监控上传小demo之第二步 设定定期执行

上一篇博客中我们介绍了怎样让程序一开机就运行

那么,根据我们上次的思路“开机运行一个定时器,定时执行某项服务”,来实现定期执行上传任务

我们需要的是AlarmManager

 

alarmmanager的作用类似于定时器,它可以让android在未来某一时刻运行某个程序,他的好处在于哪怕启动他的activity现在是处于inactive 状态,它仍然会精准的执行,除非你重启设备。

alarmManager 可以支持很多中触发形式,有单次,有循环,有自定义循环三种模式(想想我们闹铃的三种模式),我们可以在API上看到这些信息


set(int type, long triggerAtTime, PendingIntent operation)

Schedule an alarm.
setInexactRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)

Schedule a repeating alarm that has inexact trigger time requirements; for example, an alarm that repeats every hour, but not necessarily at the top of every hour.
setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)

Schedule a repeating alarm.

 

我们这里使用的是循环    也就是setRepeating

说下这个参数

首先type 是代表计时器的几种不同的计时方式,他们包含ELAPSED_REALTIME、ELAPSED_REALTIME_WAKEUP、RTC、以及RTC_WAKEUP

Elapse 系列是从开机开始算起,包括机器休眠时间   而rtc ,指的是当前时间,之后加没加wakeup 的参数修饰的意思是   到达时间后是否在到达时间后唤醒设备处理(有wakeup),还是等待用户wakeup机器后运行(无walkup)

 

后面的两个triggerAtTime和interval 代表的是起始时间和步长,最后一个是 operation  你需要启动的intent  在这里注意一下,此处的pendingintent 是预备使用的intent

ok,放代码

 

        PendingIntent mAlarmSender = PendingIntent.getService(context, 0, new Intent(

                context, UploadImgService.class), 0);



        long firstTime = SystemClock.elapsedRealtime();

        AlarmManager am = (AlarmManager) context

                .getSystemService(context.ALARM_SERVICE);

        am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime,

                10 * 6000, mAlarmSender);

 

注意一下,这个intent 就是我们要运行的服务,

这个含义就是每隔1min运行一次uploadImgService 的这个服务

 

下次我们着重讲uploadImgService 的实现

你可能感兴趣的:(android)