一个简单的Android定时任务
发布时间 - 2026-01-11 01:55:08 点击率:次使用AlarmManager来实现定时提醒,它提供了一种访问系统闹钟服务的方式。在全局中,达到设定的时间,
在它上面注册的一个Intent将会被广播,接着启动相应的应用程序,可以通过自定义Receiver来实现。

首先要在AndroidManifest.xml中进行注册
<receiver android:name=".AlarmReceiver">
<intent-filter>
<action android:name="CLOCK" />
</intent-filter>
</receiver>
自定义一个闹钟接收器,getIntExtra可用于接受发送方putExtra传过来的值,Intent i = new Intent(“CLOCK”)其中的“CLOCK”是注册时使用的seceiver的name。
public class AlarmReceiver extends BroadcastReceiver {
private int _id;
private String str;
@Override
public void onReceive(Context context, Intent intent) {
_id = intent.getIntExtra("ID", -1);
Intent i = new Intent("CLOCK");
i.setClass(context, NoteEditor.class);
i.putExtra("ID", _id);
String str = intent.getStringExtra("NOTE");
Toast.makeText( context, str, Toast.LENGTH_SHORT).show();
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
时间的获取通过DatePickerDialog和TimePickerDialog,需要注意的是DatePickerDialog的月份是从0开始。将获取的数据放在Calendar类中,其中月份的存储也是从0开始。
final AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); Calendar alarmCalendar = Calendar.getInstance();
alarmCalendar.set(mYear, mMonth-1, mDay, mHour, mMinute,0);
Intent i = new Intent("CLOCK");
i.setClass(this, AlarmReceiver.class);
i.putExtra("ID", _id);
String note="notes";
i.putExtra("NOTE",note);
设置一个PendingIntent对象作为闹钟响应的对象,发送广播。第二个参数可以为0,但是因为做的是一次性的闹钟,如果为0的话,新设的闹钟会将之前设的闹钟覆盖掉。FLAG_UPDATE_CURRENT: 如果希望获取的PendingIntent对象与已经存在的PendingIntent对象相比,如果只是Intent附加的数据不同, 那么当前存在的PendingIntent对象不会被取消,而是重新加载新的Intent附加的数据。
PendingIntent pi = PendingIntent.getBroadcast(this, _id,i,PendingIntent.FLAG_UPDATE_CURRENT);
发送闹钟请求,设置在alarmCalendar.getTimeInMillis()时间启动由pi指定的组件。
第一个参数用来指定定时服务的类型,主要可选以下值:
AlarmManager.ELAPSED_REALTIME:睡眠状态下不可用,该状态下闹钟使用相对时间。
AlarmManager.ELAPSED_REALTIME_WAKEUP:在睡眠状态下会唤醒系统并执行提示功能,也使用相对时间。
AlarmManager.RTC:该状态睡眠状态下不可用,使用绝对时间,即当前系统时间。
AlarmManager.RTC_WAKEUP:闹钟在睡眠状态下会唤醒系统并执行提示功能,该状态下闹钟也使用绝对时间。
am.set(AlarmManager.RTC_WAKEUP, alarmCalendar.getTimeInMillis(), pi);
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Android
# 定时任务
# Android实现定时任务功能
# Android实现定时任务及闹钟
# Android中定时执行任务的3种实现方法(推荐)
# Android 实现定时任务的过程详解
# Android中关于定时任务实现关闭订单问题
# 状态下
# 的是
# 是从
# 自定义
# 来实现
# 不可用
# 放在
# 第一个
# 将会
# 要在
# 可以通过
# 第二个
# 可选
# 会将
# 需要注意
# 大家多多
# 应用程序
# 类中
# 加载
# 局中
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
如何快速重置建站主机并恢复默认配置?
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
linux top下的 minerd 木马清除方法
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
如何在新浪SAE免费搭建个人博客?
JS经典正则表达式笔试题汇总
中国移动官方网站首页入口 中国移动官网网页登录
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
Python自动化办公教程_ExcelWordPDF批量处理案例
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
Laravel如何实现文件上传和存储?(本地与S3配置)
如何基于云服务器快速搭建个人网站?
如何正确选择百度移动适配建站域名?
Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制
如何注册花生壳免费域名并搭建个人网站?
javascript中对象的定义、使用以及对象和原型链操作小结
如何快速建站并高效导出源代码?
jquery插件bootstrapValidator表单验证详解
制作公司内部网站有哪些,内网如何建网站?
C#如何调用原生C++ COM对象详解
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
个人摄影网站制作流程,摄影爱好者都去什么网站?
C语言设计一个闪闪的圣诞树
如何在Ubuntu系统下快速搭建WordPress个人网站?
详解Huffman编码算法之Java实现
如何在阿里云购买域名并搭建网站?
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
javascript基本数据类型及类型检测常用方法小结
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
香港服务器建站指南:免备案优势与SEO优化技巧全解析
如何快速搭建高效WAP手机网站?
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
iOS发送验证码倒计时应用
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
如何用wdcp快速搭建高效网站?
Laravel怎么在Controller之外的地方验证数据
Laravel如何使用模型观察者?(Observer代码示例)
Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决
利用 Google AI 进行 YouTube 视频 SEO 描述优化
如何在宝塔面板创建新站点?
用v-html解决Vue.js渲染中html标签不被解析的问题
如何在Windows服务器上快速搭建网站?
Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践
如何在服务器上配置二级域名建站?
如何在IIS中新建站点并解决端口绑定冲突?
如何确认建站备案号应放置的具体位置?
如何用5美元大硬盘VPS安全高效搭建个人网站?
Laravel怎么自定义错误页面_Laravel修改404和500页面模板
上一篇:微信小程序开发实战指南
上一篇:微信小程序开发实战指南

