栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android 源码分析 - 定时器

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android 源码分析 - 定时器

  • AlarmManager

Kernel层
  • Android RTC 自下而上分析--嵌入式学院(华清远见旗下品牌)

/dev/rtc /dev/alarm

        ioctl(fd, ANDROID_ALARM_SET(type), &ts)

        ioctl(fd, ANDROID_ALARM_WAIT)

timerfd

        没有RTC Alarm时,使用timerfd实现。

Java层 core/app

        源代码位于:frameworks/base/core/java/android/app。

        实现文件:AlarmManager.java。

services/alarm

        类对应关系:

java

jni

C++

AlarmManagerService

AlarmImpl

  • jni

        源代码位于:frameworks/base/services/jni。

        实现文件:com_android_server_AlarmManagerService.cpp。

  • java

        源代码位于:frameworks/base/services/java/android/server。

        实现文件:AlarmManagerService.java。

        AlarmManagerService的辅助类:

        Alarm——定时器,可以重复。

        Batch——将允许延迟并且有交集的定时器打包一起。

        AlarmThread——循环等待RTC Alarm,分派回调(PendingIntent)

        AlarmHandler——内部消息循环,当Kernel不支持Alarm时,使用消息定时机制模拟实现。

        InFlight——记录正在运行的回调,用于统计WakeLock的实际使用者。

        ClockReceiver——注册1分钟和每天超时的定时器,回调Intent发送广播,广播类型:ACTION_TIME_TICK、ACTION_DATE_CHANGED。

        ResultReceiver——处理回调完成的通知。

        UninstallReceiver——处理应用停止(用户主动停止)、重启、卸载。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/343470.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号