AlarmManagerService 简单记录

位置:frameworks/base/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java

在 SystemServer 里面被启动:

public AlarmManagerService(Context context) {
    this(context, new Injector(context));
}

介绍看这里

4种类型:

public static final int RTC_WAKEUP = 0;

public static final int RTC = 1;

public static final int ELAPSED_REALTIME_WAKEUP = 2;

public static final int ELAPSED_REALTIME = 3;

set 方法设置一个未来启动的intent 。

设置一个 PendingIntent 在指定的时间执行。

可以设置循环
循环时间间隔:最小 1分钟,最大一年。

void rescheduleKernelAlarmsLocked:

重新计算下一个需要最先执行的 Alarm 。

jni:
frameworks/base/apex/jobscheduler/service/jni/com_android_server_alarm_AlarmManagerService.cpp

最终使用 timerfd_settime来设置闹钟时间 。
timerfd 看这里:
https://man7.org/linux/man-pages/man2/timerfd_create.2.html

涉及到 rtc的 内容:

https://man7.org/linux/man-pages/man4/rtc.4.html
https://man7.org/linux/man-pages/man8/hwclock.8.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值