这篇文章使用AlarmManager实现了Android定时后台循环任务。使用场景:项目需要app每隔一段时间就去服务端请求一次接口,从而更新本地保存的信息。

AlarmManager简介

AlarmManager是Android中常用的一种系统级别的提示服务,在特定的时刻为我们广播一个指定的Intent。简单的说就是我们设定一个时间,然后在该时间到来时,AlarmManager为我们广播一个我们设定的Intent,通常我们使用 PendingIntent。

项目功能简介:

AlarmService模拟后台任务,定时发起广播

AlarmReceive启动AlarmService,达到循环启动Service的效果

通过Service和Receiver的死循环,确保后台任务不被系统杀死。

1.AlarmService类

/**

* 一个定时任务

*/

public class AlarmService extends Service {

/**

* 每1分钟更新一次数据

*/

private static final int ONE_Miniute=60*1000;

private static final int PENDING_REQUEST=0;

public AlarmService() {

}

/**

* 调用Service都会执行到该方法

*/

@Override

public int onStartCommand(Intent intent, int flags, int startId) {

//这里模拟后台操作

new Thread(new Runnable() {

@Override

public void run() {

Log.e("wj","循环执行了,哈哈."+ System.currentTimeMillis());

}

}).start();

//通过AlarmManager定时启动广播

AlarmManager alarmManager= (AlarmManager) getSystemService(ALARM_SERVICE);

long triggerAtTime=SystemClock.elapsedRealtime()+ONE_Miniute;//从开机到现在的毫秒书(手机睡眠(sleep)的时间也包括在内

Intent i=new Intent(this, AlarmReceive.class);

PendingIntent pIntent=PendingIntent.getBroadcast(this,PENDING_REQUEST,i,PENDING_REQUEST);

alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,triggerAtTime,pIntent);

return super.onStartCommand(intent, flags, startId);

}

@Override

public IBinder onBind(Intent intent) {

// TODO: Return the communication channel to the service.

throw new UnsupportedOperationException("Not yet implemented");

}

}

2 AlarmReceive类

public class AlarmReceive extends BroadcastReceiver{

@Override

public void onReceive(Context context, Intent intent) {

//循环启动Service

Intent i = new Intent(context, AlarmService.class);

context.startService(i);

}

}

3 启动Service

public void startService(View view){

Intent intent=new Intent(this, AlarmService.class);

startService(intent);

}

别忘了AndroidMainfest中注册广播和服务:

android:name=".service.AlarmService"

android:enabled="true"

android:exported="true"/>

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

android定时循环,Android AlarmManager实现定时循环后台任务相关推荐

  1. android alarmmanager后台,Android AlarmManager实现定时循环后台任务

    这篇文章使用AlarmManager实现了Android定时后台循环任务.使用场景:项目需要app每隔一段时间就去服务端请求一次接口,从而更新本地保存的信息. AlarmManager简介 Alarm ...

  2. android提醒功能,android service实现循环定时提醒功能

    人每天都要喝8杯水才能保持健康,于是苦逼的程序员总是一遍代码就忘了时间,于是我突发奇想能不能开发一个apk能够实现固定的间隔时间定时提醒我要喝水了呢? apk基本功能: 1)能够设置间隔时间 2)在a ...

  3. android 定时更新banner图片,Android 用banner简单实现图片无限循环

    直接上图 不知道怎么放动态图. 实现步骤 1.导入引入所需要的包implementation 'com.youth.banner:banner:1.4.10' implementation 'com. ...

  4. Android 系统定时管理器AlarmManager的使用

    2019独角兽企业重金招聘Python工程师标准>>> 1.什么是AlarmManager? 按照Alarm+Manager的拼写可知,这是一个定时管理器,不能称为定时器,或者闹钟之 ...

  5. android 定时闹钟逻辑,Android 定时执行任务 AlarmManager的使用(可用于闹钟开发)...

    Android 定时执行任务 AlarmManager的使用(可用于闹钟开发) 2011年7月13日加注:所有的定时任务在手机重启后会消失,如果需要重启后继续用,可以加个开机自启,然后重新设置. Al ...

  6. Xamarin.Android通过闹钟(AlarmManager)实现定时功能

    目录 1.说明 2.效果 2.1 实现效果 2.2 功能说明 3.代码实现 3.1 定义广播接收器 3.2 layout文件 3.3 Activity代码 4.代码下载 5.其他说明 6.1 其他说明 ...

  7. android 定时静音,Android实现定时自动静音小助手

    定时静音助手的实现方法,供大家参考,具体内容如下 背景 突发奇想,刚好这学期刚上安卓课程,想设计一个时间助手.工作.学习中经常会被突如其来的电话所打扰,在上班,上课时这突如其来的铃声会惹来别人的反感, ...

  8. android后台通知,Android后台定时提醒功能实现

    前提:考虑到自己每次在敲代码或者打游戏的时候总是会不注意时间,一不留神就对着电脑连续3个小时以上,对眼睛的伤害还是挺大的,重度近视了可是会遗传给将来的孩子的呀,可能老婆都跟别人跑了. 于是,为了保护眼 ...

  9. android notification 定时显示,Android编程使用Service实现Notification定时发送功能示例...

    本文实例讲述了android编程使用service实现notification定时发送功能.分享给大家供大家参考,具体如下: /** * 通过启动或停止服务来管理通知功能 * * @descripti ...

最新文章

  1. TypeScript 素描 - 函数
  2. “分库分表 ?选型和流程要慎重,否则会失控
  3. boost::mp11::mp_replace_at相关用法的测试程序
  4. ●BZOJ 3129 [Sdoi2013]方程
  5. Linux-pthread如何设置线程的优先级
  6. Mybatis缓存模块(一)BlockingCache
  7. offset函数的高级用法_数据验证(数据有效性)结合Offset函数 的综合用法
  8. leetcode(153)寻找旋转排序数组中的最小值
  9. cloud 调用列表并返回数据操作代码
  10. PHP Mysql-简介
  11. 创建第二个 vlan network vlan101 - 每天5分钟玩转 OpenStack(96)
  12. HTML5七夕情人节表白网页制作【流星动画3D相册】HTML+CSS+JavaScript
  13. 佳能MP258mp259清零软件
  14. 中国AI专利数稳居第一!世界各国AI专利深度盘点
  15. GAE—图自编码器/Graph RNN/Graph RL
  16. java fx scen,很好的JavaFX2.0基础教程
  17. 运行Map Reduce报错Got exception: java.net.ConnectException: Call From master.localdomain/127.0.0.1 to
  18. php 大转盘抽奖概率 角度,在线抽奖大转盘和概率计算
  19. 标题相似度算法_一个简单的计算文章相似度功能!
  20. GBase8s数据库以 RESTRICT 方式或 CASCADE 方式删除安全标签对象

热门文章

  1. linux和python的关系_Python、Linux与我的缘分
  2. python 程序停止打印日志_停止 Spring Boot 服务的几种优雅姿势
  3. 【转】我的CV之路第一篇:ITK是啥?
  4. 【转】算法导论学习笔记 一 分治算法
  5. 浅谈Mysql 表设计规范
  6. opencv获取图片像素坐标_利用OpenCV从图片中提取矩形并标注坐标(室内平面地图)(一)
  7. php有哪些开源社区,PHP开源社区
  8. 【牛客 - 272B】Xor Path(树上操作,路径异或值)
  9. *【HDU - 1506】【POJ - 2559】Largest Rectangle in a Histogram(单调栈或动态规划)
  10. php7 获取文件类型,太简单了!PHP获取文件扩展名的7中方法