Android6.0 设备Idle状态(二)AlarmManagerService setIdleUntil接口.doc

Android6.0 设备Idle状态(二)AlarmManagerService setIdleUntil接口.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android6.0 设备Idle状态(二)AlarmManagerService setIdleUntil接口

Android6.0 设备Idle状态(二)AlarmManagerService setIdleUntil接口 一、set接口对flag中带了FLAG_IDLE_UNTIL的Alarm处理 先来看AlarmManager中: [java] view plain copy 在CODE上查看代码片派生到我的代码片 public void setIdleUntil(int type, long triggerAtMillis, PendingIntent operation) { setImpl(type, triggerAtMillis, WINDOW_EXACT, 0, FLAG_IDLE_UNTIL, operation, null, null); } 这个接口就是在flag中带了FLAG_IDLE_UNTIL。 我们再来看下AlarmManagerService中的set函数: [java] view plain copy 在CODE上查看代码片派生到我的代码片 private final IBinder mService = new IAlarmManager.Stub() { @Override public void set(int type, long triggerAtTime, long windowLength, long interval, int flags, PendingIntent operation, WorkSource workSource, AlarmManager.AlarmClockInfo alarmClock) { final int callingUid = Binder.getCallingUid(); if (workSource != null) { getContext().enforcePermission( android.Manifest.permission.UPDATE_DEVICE_STATS, Binder.getCallingPid(), callingUid, AlarmManager.set); } // No incoming callers can request either WAKE_FROM_IDLE or // ALLOW_WHILE_IDLE_UNRESTRICTED -- we will apply those later as appropriate. flags = ~(AlarmManager.FLAG_WAKE_FROM_IDLE | AlarmManager.FLAG_ALLOW_WHILE_IDLE_UNRESTRICTED); // Only the system can use FLAG_IDLE_UNTIL -- this is used to tell the alarm // manager when to come out of idle mode, which is only for DeviceIdleController. if (callingUid != Process.SYSTEM_UID) {//如果不是系统应用不能拥有该flag flags = ~AlarmManager.FLAG_IDLE_UNTIL; } 不是系统应用不能应有该flag。注释的说明也是这个flag只给DeviceIdleController用。 二、setImplLocked函数 继续分析setImplLocked函数 [java] view plain copy 在CODE上查看代码片派生到我的代码片 private void setImplLocked(Alarm a, boolean rebatching, boolean doValidate) { if ((a.flagsAlarmManager.FLAG_IDLE_UNTIL) != 0) {//是该flag // This is a special alarm that will put the system into idle until it

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档