首页 > 专利 > 台州市吉吉知识产权运营有限公司 > 一种Alarm优化管理方法及系统专利详情

一种Alarm优化管理方法及系统   0    0

有效专利 查看PDF
专利申请流程有哪些步骤?
专利申请流程图
申请
申请号:指国家知识产权局受理一件专利申请时给予该专利申请的一个标示号码。唯一性原则。
申请日:提出专利申请之日。
2016-11-30
申请公布
申请公布指发明专利申请经初步审查合格后,自申请日(或优先权日)起18个月期满时的公布或根据申请人的请求提前进行的公布。
申请公布号:专利申请过程中,在尚未取得专利授权之前,国家专利局《专利公报》公开专利时的编号。
申请公布日:申请公开的日期,即在专利公报上予以公开的日期。
2017-05-24
授权
授权指对发明专利申请经实质审查没有发现驳回理由,授予发明专利权;或对实用新型或外观设计专利申请经初步审查没有发现驳回理由,授予实用新型专利权或外观设计专利权。
2021-05-07
预估到期
发明专利权的期限为二十年,实用新型专利权期限为十年,外观设计专利权期限为十五年,均自申请日起计算。专利届满后法律终止保护。
2036-11-30
基本信息
有效性 有效专利 专利类型 发明专利
申请号 CN201611086853.7 申请日 2016-11-30
公开/公告号 CN106598714B 公开/公告日 2021-05-07
授权日 2021-05-07 预估到期日 2036-11-30
申请年 2016年 公开/公告年 2021年
缴费截止日 2022-12-30
分类号 G06F9/48 主分类号 G06F9/48
是否联合申请 独立申请 文献类型号 B
独权数量 1 从权数量 6
权利要求数量 7 非专利引证数量 1
引用专利数量 0 被引证专利数量 0
非专利引证 1、CN 102394809 A,2012.03.28US 3333250 A,1967.07.25陈立佳.基于Android平台定时任务的设计与实现《.电子测试》.2016,Yanmei Wang,Kaijin Qiu,Qunchao Yu.Theresearch and design of a kind of anti-sleeping student alarm clock withexercise and English learning functions. 《2014 IEEE 5th International Conferenceon Software Engineering and ServiceScience》.2014,;
引用专利 被引证专利
专利权维持 5 专利申请国编码 CN
专利事件 转让 事务标签 公开、实质审查、申请权转移、授权
申请人信息
申请人 第一申请人
专利权人 台州市吉吉知识产权运营有限公司 当前专利权人 台州市吉吉知识产权运营有限公司
发明人 田泽丰 第一发明人 田泽丰
地址 浙江省台州市椒江区洪家街道东环大道2388号农港城A区2-3167号 邮编 318015
申请人数量 1 发明人数量 1
申请人所在省 浙江省 申请人所在市 浙江省台州市
代理人信息
代理机构
专利代理机构是经省专利管理局审核,国家知识产权局批准设立,可以接受委托人的委托,在委托权限范围内以委托人的名义办理专利申请或其他专利事务的服务机构。
浙江千克知识产权代理有限公司 代理人
专利代理师是代理他人进行专利申请和办理其他专利事务,取得一定资格的人。
裴金华
摘要
本发明公开了一种Alarm优化管理方法,包括步骤:当有Alarm需要删除时,根据Alarm的标识,遍历定时器集合列表中的每个定时器集合的Alarm列表,判断是否存在Alarm与待删除的Alarm匹配,若是,进入步骤S200,否则结束操作;记录定时器集合的标识,删除定时器集合中的匹配上的Alarm;根据定时器集合中剩下的Alarm的起始到时时间值和最晚到时时间值,获得定时器集合的新起始到时时间值和新最晚到时时间值,判断定时器集合的新起始到时时间值是否与原起始到时时间值一致,若是,则结束操作;否则保留定时器集合中剩余的Alarm,删除定时器集合,并将剩余的Alarm添加到定时器集合列表中的各定时器集合中。通过本发明,在删除Alarm管理操作是,大大提高了系统效率。
  • 摘要附图
    一种Alarm优化管理方法及系统
  • 说明书附图:图1
    一种Alarm优化管理方法及系统
  • 说明书附图:图2
    一种Alarm优化管理方法及系统
  • 说明书附图:图3
    一种Alarm优化管理方法及系统
  • 说明书附图:图4
    一种Alarm优化管理方法及系统
  • 说明书附图:图5
    一种Alarm优化管理方法及系统
  • 说明书附图:图6
    一种Alarm优化管理方法及系统
  • 说明书附图:图7
    一种Alarm优化管理方法及系统
法律状态
序号 法律状态公告日 法律状态 法律状态信息
1 2021-05-07 授权
2 2020-11-13 专利申请权的转移 登记生效日: 2020.10.30 申请人由上海斐讯数据通信技术有限公司变更为台州市吉吉知识产权运营有限公司 地址由201616 上海市松江区思贤路3666号变更为318015 浙江省台州市椒江区洪家街道东环大道2388号农港城A区2-3167号
3 2017-05-24 实质审查的生效 IPC(主分类): G06F 9/48 专利申请号: 201611086853.7 申请日: 2016.11.30
4 2017-04-26 公开
权利要求
权利要求书是申请文件最核心的部分,是申请人向国家申请保护他的发明创造及划定保护范围的文件。
1.一种Alarm优化管理方法,其特征在于,包括步骤:
S100当有Alarm需要删除时,根据所述Alarm的标识,遍历定时器集合列表中的每个定时器集合的Alarm列表,判断是否存在Alarm与待删除的Alarm匹配,若是,进入步骤S200,否则结束操作;
S200记录所述定时器集合的标识,删除所述定时器集合中的匹配上的Alarm;
S300根据所述定时器集合中剩下的Alarm的起始到时时间值和最晚到时时间值,获得所述定时器集合的新起始到时时间值和新最晚到时时间值,判断所述定时器集合的新起始到时时间值是否与原起始到时时间值一致,若是,则结束操作;否则进入步骤S400;
S400保留所述定时器集合中剩余的Alarm,删除所述定时器集合,并将所述剩余的Alarm添加到定时器集合列表中的各定时器集合中;
所述步骤S300包括步骤:
S310获取所述定时器集合剩下的Alarm各起始时间值和最晚到时时间值;
S320取剩下Alarm的最大的起始时间值为所述定时器集合的新起始时间值,取所述剩下Alarm的最小的最晚到时时间值为所述定时器集合的新的最晚到时时间值;
S330判断所述定时器集合的新的起始时间值是否与所述定时器集合原起始时间值一致,若是,则不需要调整;否则,进入步骤S400;
所述步骤S400包括步骤:
S410构建待调整定时器集合标识列表,将所述定时器集合的标识添加到待调整定时器集合标识列表中;
S420删除所述待调整定时器集合标识列表中相同的定时器集合标识;
S430根据所述待调整定时器集合标识列表,按照所述定时器集合标识查找到对应的定时器集合;
S440保留所述定时器集合中的所有Alarm,删除所述定时器集合;
S450将保留的所有Alarm添加到所述定时器集合列表的定时器集合中。

2.根据权利要求1所述的一种Alarm优化管理方法,其特征在于,所述步骤S450包括步骤:
S451根据Alarm的添加规则,判断所述Alarm是否能添加到所述定时器集合列表的现有定时器集合中,若是,则进入步骤S452;否则,进入步骤S453;
S452将所述Alarm添加至所述定时器集合中;
S453根据所述Alarm的起始到时时间值与最晚到时时间值,建立一个新定时器集合,将所述Alarm添加至所述新定时器集合中,所述新定时器集合的起始到时时间即为所述Alarm的起始到时时间,所述新定时器集合的最晚到时时间即为所述Alarm的最晚到时时间;将所述新定时器集合添加至所述定时器集合列表中。

3.根据权利要求2所述的一种Alarm优化管理方法,其特征在于,所述Alarm的添加规则为:当Alarm的起始到时时间值小于定时器集合的最晚到时时间值,且所述Alarm的最晚到时时间值大于所述定时器集合的起始到时时间值时,添加所述Alarm至所述定时器集合。

4.根据权利要求1所述的一种Alarm优化管理方法,其特征在于,还包括步骤:
S450获取各定时器集合的起始到时时间值,将起始到时时间最先到达的定时器集合的起始到时时间设置到底层驱动。

5.一种Alarm优化管理系统,其特征在于,包括遍历查找模块、控制判断模块、删除模块、获取模块、添加模块;所述控制判断模块分别与所述遍历查找模块、删除模块、获取模块、及添加模块相连;其中:
当有Alarm需要删除时,所述遍历查找模块根据所述Alarm的标识,遍历定时器集合列表中的每个定时器集合的Alarm列表,所述控制判断模块判断是否存在Alarm与待删除的Alarm匹配;
若存在Alarm与待删除的Alarm匹配,则所述控制判断模块记录所述定时器集合的标注,并通过删除模块删除所述定时器集合中的匹配上的Alarm,所述获取模块根据所述定时器集合中剩下的Alarm的起始到时时间值和最晚到时时间值,获得所述定时器集合的新起始到时时间值和新最晚到时时间值,所述控制判断模块判断所述定时器集合的新起始到时时间值是否与原起始到时时间值一致,若是,则结束操作,否则,所述控制判断模块保留所述定时器集合中剩余的Alarm,通过所述删除模块删除所述定时器集合,再通过所述添加模块将所述剩余的Alarm添加到定时器集合列表中的各定时器集合中;
若不存在Alarm与待删除的Alarm匹配,则所述控制判断模块判断结束操作;
系统还包括与所述控制判断模块相连的构建模块,其中:
所述控制判断模块保留所述定时器集合中剩余的Alarm,并通过所述删除模块删除所述定时器集合,再通过所述添加模块将所述剩余的Alarm添加到定时器集合列表中的各定时器集合中包括:
所述构建模块在所述控制判断模块的控制下构建待调整定时器集合标识列表,并将所述定时器集合的标识添加到待调整定时器集合标识列表中;
所述删除模块删除所述待调整定时器集合标识列表中相同的定时器集合标识;
所述遍历查找模块根据所述待调整定时器集合标识列表,按照所述定时器集合标识查找到对应的定时器集合;
所述控制判断模块保留所述定时器集合中的所有Alarm,并通过所述删除模块删除所述定时器集合;
所述添加模块将保留的所有Alarm添加到所述定时器集合列表的定时器集合中。

6.根据权利要求5所述的一种Alarm优化管理系统,其特征在于,所述添加模块将所述保留的所有Alarm添加到所述定时器集合列表的定时器集合中包括:
所述控制判断模块根据Alarm的添加规则,判断所述Alarm是否能添加到所述定时器集合列表的现有定时器集合中,若是,则所述添加模块将所述Alarm添加至所述定时器集合中;否则,所述构建模块根据所述获取模块获取到的Alarm的起始到时时间值与最晚到时时间值,建立一个新定时器集合,所述添加模块将所述Alarm添加至所述新定时器集合中,所述新定时器集合的起始到时时间即为所述Alarm的起始到时时间,所述新定时器集合的最晚到时时间即为所述Alarm的最晚到时时间;所述添加模块将所述新定时器集合添加至所述定时器集合列表中。

7.根据权利要求5所述的一种Alarm优化管理系统,其特征在于,还包括设置模块,所述设置模块与控制模块相连,其中:
所述获取模块获取各定时器集合的起始到时时间值,所述设置模块在所述控制判断模块的控制下将起始到时时间最先到达的定时器集合的起始到时时间设置到底层驱动。
说明书

技术领域

[0001] 本发明涉及计算机网络技术领域,尤其涉及一种Alarm优化管理方法及系统。

背景技术

[0002] Android系统中,AlarmManagerService负责所有应用的Alarm(定时器)的设置和管理。AlarmManagerService定义了ArrayListmAlarmBatches数组来进行Alarm的管理,每个Batch(定时器集合)中定义了ArrayListalarms数组,每个Batch由多个Alarm组成。当应用取消Alarm或者AlarmManagerService判断到Alarm失效后,就会将Alarm从Batch列表中删除,此时需要重新构建Batch数组,以便能更加有效的将Alarm重新组成合适的Batch列表。目前的做法是将所有的Alarm从Batch列表中删除,同时删除已经构建好的Batch列表,然后重新构建新的Batch列表,并且重新将Alarm添加到Batch列表中。当Alarm比较多,同时Alarm的取消操作比较多时,这种操作费事费力,并且AlarmManagerService运行于系统进程中,这样会影响到系统的效率。

发明内容

[0003] 本发明提供一种Alarm优化管理方法及系统,用以解决上述现有技术中存在的问题,能够高效率的构建新的Batch列表,而不是全部推倒重来,影响系统效率。
[0004] 本发明一种Alarm优化管理方法,包括步骤:
[0005] S100当有Alarm需要删除时,根据所述Alarm的标识,遍历所述定时器集合列表中的每个定时器集合的Alarm列表,判断是否存在Alarm与待删除的Alarm匹配,若是,进入步骤S200,否则结束操作;
[0006] S200记录所述定时器集合的标识,删除所述定时器集合中的匹配上的Alarm;
[0007] S300根据所述定时器集合中剩下的Alarm的起始到时时间值和最晚到时时间值,获得所述定时器集合的新起始到时时间值和新最晚到时时间值,判断所述定时器集合的新起始到时时间值是否与原起始到时时间值一致,若是,则结束操作;否则进入步骤S400;
[0008] S400保留所述定时器集合中剩余的Alarm,删除所述定时器集合,并将所述剩余的Alarm添加到定时器集合列表中的各定时器集合中。
[0009] 在进行Alarm删除时,首先通过Alarm的标识匹配Batch(相当于定时器集合)中的所有Alarm,如果匹配不上,则说明该Alarm不存在,操作结束。一旦匹配上了,则记录下该Alarm所在的Batch Index(相当于定时器集合标识),并从该Batch中删除对应的Alarm。然后根据剩下的Alarm的起始到时时间和最晚到时时间确定该Batch的start(起始到时时间)值是否需要调整,如果不需要调整,则不需要进行Batch列表的重构和Alarm的重新添加,如果start值需要调整,则保留该Batch下的所有剩下的Alarm,从Batch列表中删除该Batch,然后将先前保留的Alarm添加到Batch列表中。这样最多只需要添加这个Batch中的Alarm,而不是重构整个Batch列表,再重新添加所有的Alarm,效率相对来要提高很多。
[0010] 进一步的,所述步骤S300包括步骤:
[0011] S310获取所述定时器集合剩下的Alarm各起始时间值和最晚到时时间值;
[0012] S320取所述剩下Alarm的最大的起始时间值为所述定时器集合的新起始时间值,取所述剩下Alarm的最小的最晚到时时间值为所述定时器集合的新的最晚到时时间值;
[0013] S330判断所述定时器集合的新的起始时间值是否与所述定时器集合原起始时间值一致?若是,则进入步骤S500;否则,进入步骤S400。
[0014] 进一步的,所述步骤S400包括步骤:
[0015] S410构建待调整定时器集合标识列表,将所述定时器集合的标识添加到待调整定时器集合标识列表中;
[0016] S420删除所述待调整定时器集合标识列表中相同的定时器集合标识;
[0017] S430根据所述待调整定时器集合标识列表,按照所述定时器集合标识查找到对应的定时器集合;
[0018] S440保留所述定时器集合中的所有Alarm,删除所述定时器集合;
[0019] S450将所述保留的所有Alarm添加到所述定时器集合列表的定时器集合中。
[0020] 构建待调整的Batch Index列表(相当于待调整的定时器集合标识列表),将删除Alarm后,start值发生改变的Batch的Bath Index记录在Batch Index列表中,然后再根据列表查找到对应的Batch,保留里面的Alarm,删除该Batch,再将保留的Alarm添加到Batch列表的各Batch中。
[0021] 进一步的,所述步骤S450包括步骤:
[0022] S451根据Alarm的添加规则,判断所述Alarm是否能添加到所述定时器集合列表的现有定时器集合中,若是,则进入步骤S452;否则,进入步骤S453;
[0023] S452将所述Alarm添加至所述定时器集合中;
[0024] S453根据所述Alarm的起始到时时间值与最晚到时时间值,建立一个新定时器集合,将所述Alarm添加至所述新定时器集合中,所述新定时器集合的起始到时时间即为所述Alarm的起始到时时间,所述新定时器集合的最晚到时时间即为所述Alarm的最晚到时时间;将所述新定时器集合添加至所述定时器集合列表中。
[0025] 将保留的Alarm添加至Batch列表的各Batch中,会出现两种情况,一种是,根据Alarm的添加规则,可以加入现有的Bath中,另外一种是无法加入现有的Batch中,这时,我们就需要根据这个Alarm的起始到时时间和最晚到时时间,重新构建一个Batch,这个Batch会列入Batch列表中,这个Alarm也会添加到这个重构的Batch中。
[0026] 进一步的,所述Alarm的添加规则为:当Alarm的起始到时时间值小于定时器集合的最晚到时时间值,且所述Alarm的最晚到时时间值大于所述定时器集合的起始到时时间值时,添加所述Alarm至所述定时器集合。
[0027] 进一步的,还包括步骤:
[0028] S450获取各定时器集合的起始到时时间值,将起始到时时间最先到达的定时器集合的起始到时时间设置到底层驱动。
[0029] 本发明还提供一种Alarm优化管理系统,包括遍历查找模块、控制判断模块、删除模块、获取模块、添加模块;所述控制判断模块分别与所述遍历查找模块、删除模块、获取模块、及添加模块相连;其中:
[0030] 当有Alarm需要删除时,所述遍历查找模块根据所述Alarm的标识,遍历所述定时器集合列表中的每个定时器集合的Alarm列表,所述控制判断模块判断是否存在Alarm与待删除的Alarm匹配;
[0031] 若存在Alarm与待删除的Alarm匹配,则所述控制判断模块记录所述定时器集合的标注,并通过删除模块删除所述定时器集合中的匹配上的Alarm,所述获取模块根据所述定时器集合中剩下的Alarm的起始到时时间值和最晚到时时间值,获得所述定时器集合的新起始到时时间值和新最晚到时时间值,所述控制判断模块判断所述定时器集合的新起始到时时间值是否与原起始到时时间值一致,若是,则结束操作,否则,所述控制判断模块保留所述定时器集合中剩余的Alarm,通过所述删除模块删除所述定时器集合,再通过所述添加模块将所述剩余的Alarm添加到定时器集合列表中的各定时器集合中;
[0032] 若不存在Alarm与待删除的Alarm匹配,则所述控制判断模块判断结束操作。
[0033] 进一步的,还包括与所述控制判断模块相连的构建模块,其中:
[0034] 所述控制判断模块保留所述定时器集合中剩余的Alarm,并通过所述删除模块删除所述定时器集合,再通过所述添加模块将所述剩余的Alarm添加到定时器集合列表中的各定时器集合中包括:
[0035] 所述构建模块在所述控制判断模块的控制下构建待调整定时器集合标识列表,并将所述定时器集合的标识添加到待调整定时器集合标识列表中;
[0036] 所述删除模块删除所述待调整定时器集合标识列表中相同的定时器集合标识;
[0037] 所述遍历查找模块根据所述待调整定时器集合标识列表,按照所述定时器集合标识查找到对应的定时器集合;
[0038] 所述控制判断模块保留所述定时器集合中的所有Alarm,并通过所述删除模块删除所述定时器集合;
[0039] 所述添加模块将所述保留的所有Alarm添加到所述定时器集合列表的定时器集合中。
[0040] 进一步的,所述添加模块将所述保留的所有Alarm添加到所述定时器集合列表的定时器集合中包括:
[0041] 所述控制判断模块根据Alarm的添加规则,判断所述Alarm是否能添加到所述定时器集合列表的现有定时器集合中,若是,则所述添加模块将所述Alarm添加至所述定时器集合中;否则,所述构建模块根据所述获取模块获取到的Alarm的起始到时时间值与最晚到时时间值,建立一个新定时器集合,所述添加模块将所述Alarm添加至所述新定时器集合中,所述新定时器集合的起始到时时间即为所述Alarm的起始到时时间,所述新定时器集合的最晚到时时间即为所述Alarm的最晚到时时间;所述添加模块将所述新定时器集合添加至所述定时器集合列表中。
[0042] 进一步的,还包括设置模块,所述设置模块与所述控制模块相连,其中:
[0043] 所述获取模块获取各定时器集合的起始到时时间值,所述设置模块在所述控制判断模块的控制下将起始到时时间最先到达的定时器集合的起始到时时间设置到底层驱动。
[0044] 通过本发明,在删除Alarm时,通过定时器集合的起始到时时间值是否变化来确定该定时器集合是否需要调整,不需要调整,则也不需要再进行后续的操作,需要调整的话则构建待调整的定时器集合标识列表,将该定时器集合标识加入该列表,然后再根据这个待调整定时器集合标识列表查找到对应的定时器集合,保留里面剩余的Alarm,删除该定时器集合,再将保留的Alarm进行重新添加。因此,不需要对定时器集合列表全部推倒重来,优化了系统效率。

实施方案

[0053] 为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0054] 本发明一种Alarm优化管理方法,如图1所示,包括步骤:
[0055] S100当有Alarm需要删除时,根据所述Alarm的标识,遍历所述定时器集合列表中的每个定时器集合的Alarm列表,判断是否存在Alarm与待删除的Alarm匹配,若是,进入步骤S200,否则结束操作;
[0056] S200记录所述定时器集合的标识,删除所述定时器集合中的匹配上的Alarm;
[0057] S300根据所述定时器集合中剩下的Alarm的起始到时时间值和最晚到时时间值,获得所述定时器集合的新起始到时时间值和新最晚到时时间值,判断所述定时器集合的新起始到时时间值是否与原起始到时时间值一致,若是,则结束操作;否则进入步骤S400;
[0058] S400保留所述定时器集合中剩余的Alarm,删除所述定时器集合,并将所述剩余的Alarm添加到定时器集合列表中的各定时器集合中。
[0059] 系统中的很多应用会用到很多定时器,大多数定时器对精确性要求并不严格,比如某个应用隔一段时间会连接一次网络,至于这个时间是五分钟还是十分钟应用都可以接受,应用在设置这类定时器时,会设置Alarm的起始到时时间when(如五分钟)和最晚到时时间maxWhen(如十分钟),底层系统为了省电,即避免时间相邻的Alarm过多的唤醒系统导致电能消耗太多,将有交集的这类Alarm归结到一个定时器集合中,计算定时器集合的start(起始到时时间)和end(最晚到时时间)值,当start到时时,即认为该定时器集合下的所有Alarm均到时了,所有的Alarm就可以根据自己的情况进行应用处理。
[0060] 系统有一个定时器集合列表,每个定时器集合下有一个Alarm列表,在进行Alarm删除时,首先通过Alarm的标识匹配定时器集合中的所有Alarm,如果匹配不上,则说明该Alarm不存在,操作结束。一旦匹配上了,则记录下该Alarm所在的定时器集合标识,并从该定时器集合中删除对应的Alarm。然后根据剩下的Alarm的起始到时时间和最晚到时时间确定该定时器集合的start(起始到时时间)值是否需要调整,如果不需要调整,则不需要进行后续的定时器集合列表的重构和Alarm的重新添加,结束操作即可,如果start值需要调整,则保留该定时器集合下的所有剩下的Alarm,从定时器集合列表中删除该定时器集合,然后将先前保留的Alarm添加到定时器集合列表中。这样最多只需要添加调整过的定时器集合中的Alarm,而不是重构整个定时器集合列表,再重新添加所有的Alarm,效率相对来要提高很多。
[0061] 本发明方法的第二实施例,如图2所示,在上述实施例的基础上,细叙了步骤S300的过程,具体的,本实施例包括步骤:
[0062] S100当有Alarm需要删除时,根据所述Alarm的标识,遍历所述定时器集合列表中的每个定时器集合的Alarm列表,判断是否存在Alarm与待删除的Alarm匹配,若是,进入步骤S200,否则结束操作;
[0063] S200记录所述定时器集合的标识,删除所述定时器集合中的匹配上的Alarm;
[0064] S310获取所述定时器集合剩下的Alarm各起始时间值和最晚到时时间值;
[0065] S320取所述剩下Alarm的最大的起始时间值为所述定时器集合的新起始时间值,取所述剩下Alarm的最小的最晚到时时间值为所述定时器集合的新的最晚到时时间值;
[0066] S330判断所述定时器集合的新的起始时间值是否与所述定时器集合原起始时间值一致?若是,则进入步骤S500;否则,进入步骤S400。
[0067] S400保留所述定时器集合中剩余的Alarm,删除所述定时器集合,并将所述剩余的Alarm添加到定时器集合列表中的各定时器集合中。
[0068] 删除Alarm时,定时器集合的start值和end值调整规则:剩下所有Alarm的起始到时时间when中最大的when值即为定时器集合新的start值,剩下所有Alarm的最晚到时时间maxWhen中最小的maxWhen值即为定时器集合新的end值。例如,如果一个定时器集合的start值为10;end值为50;如果删除了第一个Alarm后,剩下的Alarm的when中最大的是10,maxWhen最小的为50,即该定时器集合的start值和end值不需要调整;如果删除了第二个Alarm,剩下的Alarm中when中最大的是20,maxWhen最小的为60,则该定时器集合的start值则调整为20,end值仍为50。
[0069] 本发明方法的第三个实施例,如图3所示,包括步骤:
[0070] S100当有Alarm需要删除时,根据所述Alarm的标识,遍历所述定时器集合列表中的每个定时器集合的Alarm列表,判断是否存在Alarm与待删除的Alarm匹配,若是,进入步骤S200,否则结束操作;
[0071] S200记录所述定时器集合的标识,删除所述定时器集合中的匹配上的Alarm;
[0072] S300根据所述定时器集合中剩下的Alarm的起始到时时间值和最晚到时时间值,获得所述定时器集合的新起始到时时间值和新最晚到时时间值,判断所述定时器集合的新起始到时时间值是否与原起始到时时间值一致,若是,则结束操作;否则进入步骤S400;
[0073] S410构建待调整定时器集合标识列表,将所述定时器集合的标识添加到待调整定时器集合标识列表中;
[0074] S420删除所述待调整定时器集合标识列表中相同的定时器集合标识;
[0075] S430根据所述待调整定时器集合标识列表,按照所述定时器集合标识查找到对应的定时器集合;
[0076] S440保留所述定时器集合中的所有Alarm,删除所述定时器集合;
[0077] S450将所述保留的所有Alarm添加到所述定时器集合列表的定时器集合中。
[0078] 删除Alarm后,删除所述定时器集合以及将保留的Alarm重新添加的条件:只有定时器集合的start(起始到时时间)值发生变化时,才需要删除所述定时器集合以及将保留的Alarm重新添加。如果仅仅只是end(最晚到时时间)值发生变化,则不需要。
[0079] 本实施例通过建立一个待调整定时器集合标识列表,将删除了Alarm且start值发生变化的定时器集合的标识添加到该待调整定时器集合标识列表中。然后再根据该待调整定时器集合列表,找到对应的定时器集合,保留其中的所有Alarm,然后删除这个定时器集合。再将保留的所有Alarm添加到定时器集合列表中的各定时器集合中。如此这样的话,就不需重新推翻所有的定时器集合列表,只需要筛选一部分进行删除添加,而筛选出来的这部分定时器集合,已将其标识例如了待调整定时器集合标识列表中,便于后续的查找和操作,大大提高了工作效率。
[0080] 较佳的,在上述实施例的基础上,将步骤S450进行了细叙,如图4所示,所述步骤S400包括步骤:
[0081] S410构建待调整定时器集合标识列表,将所述定时器集合的标识添加到待调整定时器集合标识列表中;
[0082] S420删除所述待调整定时器集合标识列表中相同的定时器集合标识;
[0083] S430根据所述待调整定时器集合标识列表,按照所述定时器集合标识查找到对应的定时器集合;
[0084] S440保留所述定时器集合中的所有Alarm,删除所述定时器集合;
[0085] S451根据Alarm的添加规则,判断所述Alarm是否能添加到所述定时器集合列表的现有定时器集合中,若是,则进入步骤S452;否则,进入步骤S453;
[0086] S452将所述Alarm添加至所述定时器集合中;
[0087] S453根据所述Alarm的起始到时时间值与最晚到时时间值,建立一个新定时器集合,将所述Alarm添加至所述新定时器集合中,所述新定时器集合的起始到时时间即为所述Alarm的起始到时时间,所述新定时器集合的最晚到时时间即为所述Alarm的最晚到时时间;将所述新定时器集合添加至所述定时器集合列表中。
[0088] 根据剩下的所有Alarm重构定时器集合列表,如果Alarm不符合添加该定时器集合的添加规则,那么,就必须重新建立一个定时器集合,把这个Alam纳入该定时器集合中,该定时集合的起始到时时间和最晚到时时间与该Alarm一致,该定时器集合也会被列入定时器集合列表中;如果符合添加规则的话,则添加该Alarm到该定时器集合中,同时会更新该定时器集合中新的起始到时时间和最晚到时时间。
[0089] 较佳的,所述Alarm的添加规则为:当Alarm的起始到时时间值小于定时器集合的最晚到时时间值,且所述Alarm的最晚到时时间值大于所述定时器集合的起始到时时间值时,添加所述Alarm至所述定时器集合。
[0090] 较佳的,在上述任一实施例的基础上,均可增加步骤:
[0091] S450获取各定时器集合的起始到时时间值,将起始到时时间最先到达的定时器集合的起始到时时间设置到底层驱动。
[0092] 由于本发明中Alarm的管理,会涉及定时器集合中Alarm的添加和删除,且随着Alarm的添加和删除,相应的定时器集合的(以下简称Batch)中的起始到时时间(以下以start代替)和最晚到时时间(以下以end代替)值也会相应变化,下面举例说明添加或删除时,定时器集合的start值和end值的计算过程:
[0093] 系统中的很多应用会用到很多定时器,大多数定时器对精确性要求并不严格,比如某个应用隔一段时间会连接一次网络,至于这个时间是五分钟还是十分钟应用都可以接受,应用在设置这类定时器时,会设置Alarm的起始到时时间when(如五分钟)和最晚到时时间maxWhen(如十分钟),底层系统为了省电,即避免时间相邻的Alarm过多的唤醒系统导致电能消耗太多,将有交集的这类Alarm归结到一个Batch中,计算Batch的start和end值,将Batch的start值设置到底层驱动系统中,当start到时时,即认为该Batch下的所有Alarm均到时了,所有的Alarm就可以根据自己的情况进行应用处理。
[0094] 确定Alarm适合可以添加到哪个Batch中的规则:Alarm的起始到时时间when小于Batch的end值,同时,Alarm的最晚到时时间maxWhen大于Batch的start值。
[0095] Alarm添加到Batch后,Batch的start值和end值调整规则:如果Alarm的起始到时时间when大于Batch的start值,则Batch的新start值则为该Alarm的起始到时时间when;如果Alarm的最晚到时时间maxWhen小于Batch的end值,则Batch的新end值为该Alarm的最晚到时时间maxWhen。
[0096] 举例如下:
[0097] 应用设置了第一个Alarm:起始到时时间when1为10分钟,最晚到时时间maxWhen1为50分钟,系统从10到50这个区间到时均满足要求;
[0098] 由于此时是第一个Alarm,Batch的start值为when1(10),end值为maxWhen1(50)[0099] 应用设置了第二个Alarm:起始到时时间when2为5分钟,最晚到时时间maxWhen2为40分钟,系统从5到40这个区间到时均满足要求;
[0100] 此时起始到时时间when2(5)Batch的start(10),该Alarm可以添加到Batch中,同时调整Batch的start和end值:起始到时时间when2(5)不满足大于Batch的start(10),所以Batch的start值不需要调整,最晚到时时间maxWhen2(40)小于Batch的end(50),所以Batch的end值调整为maxWhen2(40),此时Batch的start仍然为10,end值则为40
[0101] 应用设置了第三个Alarm:起始到时时间when3为20分钟,最晚到时时间maxWhen3为60分钟,系统从20到60这个区间到时均满足要求;
[0102] 此时起始到时时间when3(20)Batch的start(10),该Alarm可以添加到Batch中,同时调整Batch的start和end值:起始到时时间when3(20)大于Batch的start(10),所以Batch的start值调整为when3(20),最晚到时时间maxWhen3(60)不满足小于Batch的end(40),所以Batch的end值不需要调整,此时Batch的start仍然为20,end值则为40。
[0103] 应用设置了第四个Alarm:起始到时时间when4为25分钟,最晚到时时间maxWhen4为35分钟,系统从25到35这个区间到时均满足要求;
[0104] 此时起始到时时间when4(25)Batch的start(20),该Alarm可以添加到Batch中,同时调整Batch的start和end值:起始到时时间when4(25)大于Batch的start(20),所以Batch的start值调整为when4(25),最晚到时时间maxWhen4(35)小于Batch的end(40),所以Batch的end值调整为maxWhen4(35),此时Batch的start为25,end值则为35
[0105] 通过上面的例子,实际上系统将四个Alarm综合成一个Batch,Batch的start值均处于四个Alarm的有效区间,这样只需要设置Batch的start值到底层驱动,当Batch的start值到时后,即认为四个Alarm均到到时了,设置了Alarm的应用就可以进行相关应用处理了。
[0106] 删除Alarm时,Batch的start值和end值调整规则:剩下所有Alarm的起始到时时间when中最大的when值即为Batch新的start值,剩下所有Alarm的最晚到时时间maxWhen中最小的maxWhen值即为Batch新的end值。
[0107] 仍然是上面的例子:
[0108] 如果删除了第一个Alarm,剩下的三个Alarm的when中最大的是25,maxWhen最小的为35,即Batch的start值和end值不需要调整;
[0109] 如果删除了第二个Alarm,剩下三个Alarm中when中最大的是25,maxWhen最小的为35,即Batch的start值和end值不需要调整;
[0110] 如果删除了第四个Alarm,剩下三个Alarm中when中最大的是20,maxWhen最小的为40,则Batch的start值则调整为20,end值调整为40。回到了添加第四个Alarm之前的状态。
[0111] 本发明方法的最后一个实施例,在进行Alarm删除时,首先通过Alarm的标识匹配Batch中的所有Alarm,如果匹配不上,则说明该Alarm不存在,操作结束。一旦匹配上了,则记录下该Alarm所在的Batch Index(定时器集合标识),并从该Batch(定时器集合)中删除对应的Alarm。然后根据剩下的Alarm的起始到时时间和最晚到时时间确定该Batch的start值是否需要调整,如果不需要调整,则不需要进行Batch列表的重构和Alarm的重新添加,如果start值需要调整,则保留该Batch下的所有剩下的Alarm,从Batch列表中删除该Batch,然后将先前保留的Alarm添加到Batch列表中。这样最多只需要添加一个Batch中的Alarm,而不是重构整个Batch列表,再重新添加所有的Alarm,效率相对来要提高很多。本实施例包括两个部分:Alarm对应的Batch Index列表构建、根据Batch Index列表重新添加Alarm。
[0112] 第一部分:Alarm对应的Batch Index列表构建,包括:
[0113] 当应用删除还为到时的Alarm时,会调用AlarmManagerService提供的接口函数removeLocked,removeLocked提供了三组参数定义:
[0114] public void removeLocked(PendingIntent operation)
[0115] public void removeLocked(String packageName)
[0116] public void removeLocked(int userHandle)
[0117] Alarm的数据结构中有两个重要的成员定义:
[0118] public PendingIntent operation;
[0119] public int uid;
[0120] PendingIntent是Alarm到时的发送的Intent,可以通过匹配Batch列表中的Alarm数据结构中的PendingIntent来找到要删除的Alarm。packageName是Alarm所在应用的包名,通过PendingIntent的成员函数getTargetPackage即可以获取Alarm所在的包名。userHandle即是Alarm所在应用的uid,直接匹配Batch列表中的Alarm的成员uid即可匹配到要删除的Alarm。由于当参数为应用的包名或uid时,标识要删除对应应用下的所有Alarm,所以要记录的Batch Index必须是列表数组,这样才能够记录要删除的所有Alarm对应的Batch,方便Batch列表的重新构建。流程图如图5所示,系统有一个Batch列表,每个Batch下有一个Alarm列表,首先遍历Batch列表,对列表中的每个Batch,都需要遍历下面的Alarm列表,以确定该Batch列表中是否有要删除的Alarm,如果有并且同时调整了所在Batch的Start值(剩下的Alarm的最大的起始到时时间即为Batch新的start值,剩下Alarm的最小的最晚到时时间即为Batch新的end值,当新的start值与原start值判断不一致时,需要调整)则记录下对应Batch的Index,如果没有匹配的Alarm,则继续遍历Batch,直到遍历完整个Batch列表。最后记录下所有需要重新处理的Batch Index。最后记录下来的Batch Index列表,需要通过遍历删除其中相同的Batch Index,以免后续构建新的Batch时进行重复操作。
[0121] 值得注意的是,流程图中的removeLocked的参数为PendingIntent或uid时,直接从Alarm结构中获取PendingIntent或uid成员进行匹配。参数为应用包名时,先从Alarm结构中获取PendingIntent,调用PendingIntent中的getTargetPackage函数获取Alarm所在应用的包名,再进行匹配。
[0122] 第二部分:根据Batch Index列表重新添加Alarm:
[0123] 当Alarm删除完成后,其对应的需要调整的Batch都已经添加到了Batch Index列表中。接下来需要调整Batch列表。调整Batch的操作会进入到AlarmManagerService的rebatchAlarmsLocked函数中。具体流程如图6所示:
[0124] 首先需要遍历有删除Alarm并且Batch的start值发生过变化的的Batch Index列表,根据Batch Index取出对应的Batch实例,然后保留其下的剩下的Alarm,然后删除该Batch。后面调用AlarmManagerService的setImpl函数将保存的Alarm重新添加到Batch列表中。当Batch Index列表中对应的Batch全部操作完成后,调用AlarmManagerService的rescheduleKernelAlarmsLocked函数设置最近的Batch的start值到底层驱动。
[0125] 本发明的优点在于:通过Batch的start值是否变化来确定Batch是否需要调整,不需要对Batch列表全部推倒重来,优化了系统效率。
[0126] 基于相同的技术构思,本发明实施例还提供一种Alarm的优化管理系统,该系统可执行上述方法实施例。本发明实施例提供的系统如图7所示。本发明系统第一实施例包括遍历查找模块20、控制判断模块10、删除模块30、获取模块40、添加模块50;所述控制判断模块10分别与所述遍历查找模块20、删除模块30、获取模块40、及添加模块50相连;其中:
[0127] 当有Alarm需要删除时,所述遍历查找模块20根据所述Alarm的标识,遍历所述定时器集合列表中的每个定时器集合的Alarm列表,所述控制判断模块10判断是否存在Alarm与待删除的Alarm匹配;
[0128] 若存在Alarm与待删除的Alarm匹配,则所述控制判断模块10记录所述定时器集合的标注,并通过删除模块30删除所述定时器集合中的匹配上的Alarm,所述获取模块40根据所述定时器集合中剩下的Alarm的起始到时时间值和最晚到时时间值,获得所述定时器集合的新起始到时时间值和新最晚到时时间值,所述控制判断模块10判断所述定时器集合的新起始到时时间值是否与原起始到时时间值一致,若是,则结束操作,否则,所述控制判断模块10保留所述定时器集合中剩余的Alarm,通过所述删除模块30删除所述定时器集合,再通过所述添加模块50将所述剩余的Alarm添加到定时器集合列表中的各定时器集合中;
[0129] 若不存在Alarm与待删除的Alarm匹配,则所述控制判断模块10判断结束操作。
[0130] 本发明管理系统实施例,当有Alarm删除时,通过定时器集合的起始到时时间是否变化来确定定时器集合是否需要调整,筛选出需要调整的定时器集合后,再执行后续的定时器集合的重构。
[0131] 较佳的,在上述实施例的基础上,还包括与所述控制判断模块10相连的构建模块60,其中:
[0132] 所述控制判断模块10保留所述定时器集合中剩余的Alarm,并通过所述删除模块30删除所述定时器集合,再通过所述添加模块50将所述剩余的Alarm添加到定时器集合列表中的各定时器集合中包括:
[0133] 所述构建模块60在所述控制判断模块10的控制下构建待调整定时器集合标识列表,并将所述定时器集合的标识添加到待调整定时器集合标识列表中;
[0134] 所述删除模块30删除所述待调整定时器集合标识列表中相同的定时器集合标识;
[0135] 所述遍历查找模块20根据所述待调整定时器集合标识列表,按照所述定时器集合标识查找到对应的定时器集合;
[0136] 所述控制判断模块10保留所述定时器集合中的所有Alarm,并通过所述删除模块30删除所述定时器集合;
[0137] 所述添加模块50将所述保留的所有Alarm添加到所述定时器集合列表的定时器集合中。
[0138] 通过构建删除Alarm对应的待调整定时器集合标识列表来优化定时器集合列表的重构。
[0139] 较佳的,在上述实施例的基础上,所述添加模块50将所述保留的所有Alarm添加到所述定时器集合列表的定时器集合中包括:
[0140] 所述控制判断模块10根据Alarm的添加规则,判断所述Alarm是否能添加到所述定时器集合列表的现有定时器集合中,若是,则所述添加模块50将所述Alarm添加至所述定时器集合中;否则,所述构建模块60根据所述获取模块40获取到的Alarm的起始到时时间值与最晚到时时间值,建立一个新定时器集合,所述添加模块50将所述Alarm添加至所述新定时器集合中,所述新定时器集合的起始到时时间即为所述Alarm的起始到时时间,所述新定时器集合的最晚到时时间即为所述Alarm的最晚到时时间;所述添加模块50将所述新定时器集合添加至所述定时器集合列表中。
[0141] 较佳的,在上述任一实施例的基础上,还包括设置模块70,所述设置模块70与所述控制模块相连,其中:
[0142] 所述获取模块40获取各定时器集合的起始到时时间值,所述设置模块70在所述控制判断模块10的控制下将起始到时时间最先到达的定时器集合的起始到时时间设置到底层驱动。
[0143] 本实施例设置最近的定时器集合的起始到时时间值到底层驱动,即使系统关机了,当所述定时器集合的起始到时时间到达时,仍会唤醒系统,执行相应的应用。
[0144] 尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0145] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

附图说明

[0045] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0046] 图1为本发明一种Alarm优化管理方法实施例一流程图;
[0047] 图2为本发明一种Alarm优化管理方法另一实施例流程图;;
[0048] 图3为本发明一种Alarm优化管理方法另一实施例流程图;;
[0049] 图4为构建待调整定时器集合标识列表,添加所有保留Alarm的流程图;
[0050] 图5为Alarm对应的Batch Index列表构建流程图;
[0051] 图6为根据Batch Index列表重新添加Alarm流程图;
[0052] 图7为本发明一种Alarm优化管理系统实施例框图。
版权所有:盲专网 ©2023 zlpt.xyz  蜀ICP备2023003576号