android tv闹钟_AlarmManager实现闹钟功能【Android】

这些年,我已经逐渐学会接受,接受意外,接受变故,接受误解,接受努力却暂时得不到回报,接受这个世界的残忍,接受我们身上的那些残缺。我们无法改变这个世界,但我依然选择不妥协,我还是让自己努力去爱,去为自己心中所想不顾一切。因为只有这样,我才能感觉真实,会快乐一些。

72dcd259f21c473107b06fc51f310f92.png

AlarmManager简介

在Android中可以通过AlarmManager实现调用系统闹钟服务,从而实现闹钟功能。

AlarmManager提供了对系统闹钟服务访问的接口。可以通过它来设定在未来某个时间唤醒的功能。闹钟响起,实际上是系统发出了为这个闹钟注册的广播,会自动开启目标应用。注册的闹钟在设备睡眠的时候仍然会保留,可以选择性地设置是否唤醒设备,但是当设备关机和重启后,闹钟将会被清除。

在闹钟广播接收器(简称alarmreceiver)的onReceive()方法被执行的时候,AlarmManager持有一个CPU唤醒锁,这样就保证了设备在处理完广播之前不会sleep。一旦onReceive()方法返回,AlarmManager就会释放这个锁,表明一些情况下可能onReceive()方法一执行完设备就会sleep。如果alarmreceiver中调用了Context.startService(),那么很可能service还没起来设备就sleep了。为了阻止这种情况,BroadcastReceiver和Service需要实现不同的唤醒锁机制,来确保设备持续运行到service可用为止。

注意:AlarmManager主要是用来在特定时刻运行的代码,即便是应用在那个特定时刻没有运行。对于常规的计时操作(ticks, timeouts, etc),使用Handler处理更加方便和有效率。另外,从API 19开始,闹钟的机制都是非准确传递,操作系统将会转换闹钟,来最小化唤醒和电池使用。有一些新的API会支持严格准确的传递,如setWindow(int, long, long, PendingIntent)和setExact(int, long, PendingIntent)。targetSdkVersion在API19之前应用仍将继续使用以前的行为,所有的闹钟在要求准确传递的情况下都会准确传递。

AlarmManager常用方法

1、初始化AlarmManager

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

2、设置一次闹钟

/**

* AndroidL开始,设置的alarm的触发时间必须大于当前时间 5秒

*

* 设置一次闹钟-(5s后启动闹钟)

*

* @AlarmType int type:闹钟类型

* ELAPSED_REALTIME:在指定的延时过后,发送广播,但不唤醒设备(闹钟在睡眠状态下不可用)。如果在系统休眠时闹钟触发,它将不会被传递,直到下一次设备唤醒。

* ELAPSED_REALTIME_WAKEUP:在指定的延时过后,发送广播,并唤醒设备(即使关机也会执行operation所

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值