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

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

我们需要的是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 的实现

更多相关文章

  1. Android(安卓)ProgressBar的使用!
  2. Android车载方案公司,你该何去何从?
  3. iOS与Android的3个差异
  4. Android(安卓)切换应用主题风格
  5. Android(安卓)2.2之opencore分析
  6. Android/iOS视频编辑SDK开发记
  7. Android(安卓)APP性能及专项测试
  8. Android(安卓)之 日期时间 时区同步
  9. BlockCanary分析android卡顿

随机推荐

  1. Android(安卓)graphics画图的点击事件处
  2. android baidupush
  3. 如何修改 Android(安卓)状态栏高度?
  4. Android(安卓)Studio 无法启动虚拟机的问
  5. Android中添加水平线
  6. Android(安卓)文件下载 downloadManager
  7. Android_android studio使用 9patch常见
  8. Android(安卓)透明度对应16进制值
  9. MediaScannerReceiver
  10. Android(安卓)Factory Reset flow