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

这篇文章使用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"/>

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445727.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 线性布局蒙层,Android开发 - 掌握ConstraintLayout(一)传统布局的问题

在传统的Android开发中,页面布局占用了我们很多的开发时间,而且面对复杂页面的时候,传统的一些布局会显得非常复杂,每种布局都有特定的应用场景,我们通常需要各种布局结合起来使用来实现复杂的页面。随着ConstraintLay…

android sdk 4.4.4,4.4.4 not in Android SDK manager

问题I need to do some testing with 4.4.4 and it isnt available in my Android SDK Manager?Any ideas on what Im doing wrong?回答1:There is no problem at you Android SDK Manager, you just have to download the API 19.The API 19 is used by all the KitKat devi…

android7.0提示定位,解决android7.0上某些PopuWindow显示位置不正确的问题

网上关于android系统7.0的popupwindow适配的解决方案,基本都是一样的,就是重写PopupWindow里面的方法但是如何进行重写,对于一个初次接触的人来说,是个很头疼的问题。一来是涉及到java基础,二来是涉及到popupwindow的源…

android 全局 窗口,miui12全局自由窗口app

miui12全局自由窗口app是小米最新更新的系统引用了全局自由窗口功能,在你玩游戏或者是追剧的时候,都可以直接在一个页面上聊天,无需切换那么麻烦,支持多种机型进行使用这个功能,多种模式你可以自由的切换使用&#xff…

LeetCode - Medium - 264. Ugly Number II

Topic MathDynamic ProgrammingHeap Description https://leetcode.com/problems/ugly-number-ii/ Analysis 方法一:遍历自然数,逐个判断是否是丑数。这方法很低效。 方法二:动态数组。 We have an array k of first n ugly number. W…

signature=4abdf782f13579fc1b57d94a0c6ce95c,β-lactam-associated eosinophilic colitis

摘要:A 42-year-old man with a history of childhood asthma presented with a 2-week history of watery diarrhoea and marked peripheral eosinophilia in the setting of recent use of cephalexin. His colonoscopy revealed patchy colitis. Biopsies were c…

html文档定义层标记是,jsp练习题目201312

《JSP商务网站设计》复习综合题型一、单项选择题1. 关于分页显示,下列的叙述哪一项是不正确的?()A)只编制一个页面是不可能实现分页显示的B)采用一至三个页面都可以实现分页显示C)分页显示中,记录集不必在页面跳转后重新生成D)分页显示中页面…

html一个页面同时加载多个饼图,Html5饼图绘制实现统计图的方法

Html5提供了强大的绘图API,让我们能够使用javascript轻松绘制各种图形。本文将主要讲解使用HTML5绘制饼图(统计图)的方法。先看一下饼图效果:这个图是动态生成的,根据传入的比例参数(数组),来动态绘制饼图。饼图的大小也是根据高度…

html中半透明效果,CSS半透明效果的属性和场景

在CSS中与半透明效果相关的属性有两个:opacity和rgba。opacity属性的值规定透明度。从 0.0 (完全透明)到 1.0(完全不透明)。设置opacity元素的所有后代元素会随着一起具有透明性,一般用于调整图片或者模块的整体不透明度。IE8 以及更早的版本支持替代的 …

swift解析html数据类型,ios-Swift:以标签或textVi显示HTML数据

ios-Swift:以标签或textVi显示HTML数据我有一些HTML数据,其中包含标题,段落,图像和列表标签。有没有一种方法可以在一个UITextView或UILabel中显示此数据?12个解决方案146 votes对于Swift 4:extension Stri…

HTML5新增的video标签,HTML5中video标签的使用方法

HTML5中video标签的使用方法发布时间:2020-08-27 11:33:56来源:亿速云阅读:100作者:小新这篇文章将为大家详细讲解有关HTML5中video标签的使用方法,小编觉得挺实用的,因此分享给大家做个参考,希…

开封高级高考2021成绩查询,2021开封市地区高考成绩排名查询,开封市高考各高中成绩喜报榜单...

距离2018年高考还有不到一个月的时间了,很多人在准备最后冲刺的同时,也在关心高考成绩。2018各地区高考成绩排名查询,高考各高中成绩喜报榜单尚未公布,下面是往年各地区高考成绩排名查询,高考各高中成绩喜报榜单,想要了解同学可以…

html 5 笔记,HTML5总笔记(一)

一、p、hn、br标签1.2. :注释。3. :一行,一段(在文字后面直接加)。4.:文字中的最大字符(自动换行)。5. :文字中的最大字符(自动换行)。二、b、i、u、s、su…

【清华大学】《逻辑学概论》笔记

教学视频来源 ----第0讲 概要-0.1 讲师介绍0.2 课程内容--第1讲 什么是逻辑学?-1.1 “逻辑和逻辑学1.2 推理和推理形式1.3 有效推理形式1.4 逻辑学的特点1.5 逻辑学的基本准则1.6 逻辑学和其他学科的关系1.7 关于本课程《逻辑学概论》---第2讲 逻辑学的产生与发展-…

公用计算机管理,如何管理公用计算机和私人计算机的文件访问

如何管理公用计算机和私人计算机的文件访问08/07/2014本文内容适用于: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007上一次修改主题: 2011-08-01本主题将介绍如何为 Microsoft Exchange Server…

Spring Boot 2 学习笔记(1 / 2)

Spring Boot 2 学习笔记(2 / 2) ---01、基础入门-SpringBoot2课程介绍02、基础入门-Spring生态圈03、基础入门-SpringBoot的大时代背景04、基础入门-SpringBoot官方文档架构05、基础入门-SpringBoot-HelloWorld06、基础入门-SpringBoot-依赖管理特性07、…

关于计算机展览的英语作文,2015考研英语作文范文精选:选什么东西参加展览?...

距离考研初试只剩十几天的时间,备考时间可谓相当紧张,考研英语作文的复习是2015考研考前最后冲刺的重点任务之一,在此分享2015考研英语作文范文精选:选什么东西参加展览?希望能够帮助大家更好的备考。2015考研英语作文范文精选&a…

Spring Boot 2 学习笔记(2 / 2)

Spring Boot 2 学习笔记(1 / 2) ---45、web实验-抽取公共页面46、web实验-遍历数据与页面bug修改47、视图解析-【源码分析】-视图解析器与视图48、拦截器-登录检查与静态资源放行49、拦截器-【源码分析】-拦截器的执行时机和原理50、文件上传-单文件与多…

职校学计算机对口高考可以考幼师吗,幼师专业对口高考考那些

技校网专门为您推荐的类似问题答案问题1:幼师专业对口高考1,幼教要考的内容很多的,比如音乐,舞蹈,心理卫生,教法等等很多的,其中音乐就要考声乐,乐理,视唱等等???2,如…

写出表格的结构html,一个面试题,根据json结构生成html表格

我的输入是{A1: {B1: {C1: {D1: 1233,D2: 11},C2: {D1: 10,D2: 10}},B2: {C1: {D1: 10,D2: 11},C2: {D1: 10,D2: 10},C3: {D1: 10,D2: 10}}}}用什么框架都可以,只要求输出以下table, json的最后一个节点就是table的最后一个column,并且只能占…