首页> 中国专利> 基于重构技术实现多应用网络请求能耗优化的方法

基于重构技术实现多应用网络请求能耗优化的方法

摘要

本发明涉及一种基于重构技术实现多应用网络请求能耗优化的方法。该方法在修改并重构移动应用的二进制字节码,替换其使用的网络操作相关的应用编程接口(API),从而对原有网络操作进行调度,使重构后的应用能合并发送网络请求,达到节省手机电量的目的。该方法对现有移动应用进行程序化分析,找出与网络操作相关的计算逻辑,并进行相应的重构,最后重新生成网络请求可被调度的应用。本发明有助于提高手机的续航,尤其对于后台应用较多,在省电的同时又希望后台推送正常的用户具有十分重要的意义。

著录项

  • 公开/公告号CN105391872A

    专利类型发明专利

  • 公开/公告日2016-03-09

    原文格式PDF

  • 申请/专利权人 北京大学;

    申请/专利号CN201510671685.7

  • 发明设计人 黄罡;张颖;梅宏;蔡华谦;

    申请日2015-10-13

  • 分类号H04M1/73;H04W52/02;

  • 代理机构北京君尚知识产权代理事务所(普通合伙);

  • 代理人冯艺东

  • 地址 100871 北京市海淀区颐和园路5号

  • 入库时间 2023-12-18 14:35:31

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-01-18

    授权

    授权

  • 2016-04-06

    实质审查的生效 IPC(主分类):H04M1/73 申请日:20151013

    实质审查的生效

  • 2016-03-09

    公开

    公开

说明书

技术领域

本发明是一种利用程序分析与重构技术实现在现有移动应用中调度应用发起的网络请 求,从而实现网络请求合并调度,节省整体能耗的方法,属于软件技术领域,适用于软件维 护。

背景技术

随着智能手机的发展,移动应用越来越依赖云端提供的硬件、软件资源,以提供更好的 服务。然而,在利用到云端资源的同时,移动应用需要消耗大量的电量以通过网络与云端通 信。特别在3G/4G环境下,一些应用(如新闻、天气、邮件等应用)在后台长时间间隔地利 用网络获取相应的相应的推送消息。这种长时间间隔式的消息推送给电池容量有限的智能手 机的续航带来了巨大的挑战。

针对运行在后台的应用在网络上的能耗,出现了各种基于防火墙技术的管理后台网络请 求的应用。用户通过相应的权限设置,允许或禁止一个应用发送网络请求。然而,这类粗粒 度的解决方案,一旦设置禁止一个应用的后台请求,会导致这个应用程序逻辑异常,进而导 致相应的推送功能失效。因此,需要一种既能保证应用网络请求发送,又能节省网络能耗开 销的方法。它可以在不需要移动应用开发人员进行二次开发的情况下,使现有的移动应用以 一种更加节能的方式使用网络资源,降低网络能耗。

发明内容

本发明的目的是节省智能手机在网络方面的能耗。其核心思想是由用户指定终端中的部 分应用为网络请求可调度应用。通过对这些网络请求可调度应用的程序分析和重构,使这些 应用发起的网络请求具备被调度的能力,即被延迟发送。本方法通过调度并合并多应用间的 网络请求,实现节省智能手机在网络方面的能耗;通过只延迟部分网络请求,而非禁止发送 网络请求,保证应用功能的正常使用。

具体来说,本发明采用的技术方案如下:

一种基于重构技术实现多应用网络请求能耗优化的方法,其步骤包括:

1)对移动应用进行程序化分析,找出与网络操作相关的计算逻辑,并进行相应的重构, 将移动应用中调用网络相关的API替换为可被调度的网络相关API;

2)移动应用调用重构后的API,使发送的网络请求被延迟调度,并对一段时间内的网络 请求进行合并发送。

进一步地,步骤1)所述重构的过程包括:

a)利用关键字匹配,找出所有和网络操作相关的类;

b)重构网络相关的API:为保证所有网络相关操作均被替换为可调度的网络相关操作, 通过插桩所有网络相关操作,将网络相关操作所需的上下文进行封装,传递进对应的调度函 数,由调度器进行调度;如果网络操作有返回值,则由调度函数返回。

进一步地,步骤a)首先构建一个现有框架层网络相关操作的关键字库,再根据这个关 键字库找出在应用中所有用到了网络相关API的类。

进一步地,步骤b)中,网络请求建立的链路的类型分为短链接和长链接,短链接即每 次请求重新建立手机至云端的链路,长链接则是建立起手机与云端的链路后,多次复用这个 链接;所述调度器针对网络请求的不同类型进行处理,以避免出现大量网络延迟的情况。

进一步地,步骤2)对网络请求进行调度和合并的机制包括调度算法抽象,即将调度算 法抽象为包含sleep和wakeup两个原语的一段代码,sleep原语表示对执行本次网络操作进行 延迟,wakeup原语表示可以发送网络请求,该wakeup原语会唤醒处于延迟中的网络操作。

进一步地,步骤2)对网络请求进行调度和合并的机制还包括多应用间通讯机制,即 wakeup原语不仅需要在多线程间进行通讯,还需要在多进程间进行通讯,以实现多应用间的 调度器相互配合,完成多应用的网络请求调度功能。

本发明提出了一种既能保证应用网络请求发送,又能节省网络能耗开销的方法。它可以 在不需要移动应用开发人员进行二次开发的情况下,使现有的移动应用以一种更加节能的方 式使用网络资源,降低网络能耗。本方法在保证后台应用功能性正常的情况下,根据用户提 供的应用可接受推送最大延迟的配置,调度应用的网络请求。在时间维度上聚合这些网络请 求,以节省更多的电量。

附图说明

图1是重构前后应用的网络请求发送流程变化示意图,其中(a)为原始网络请求控制流, (b)为重构后网络请求控制流。

图2是重构及调度器的实现代码示意图,其中(a)为短链接重构示例,(b)为调度器中的 sleep和wakeUp原语。

图3是sleep和wakeUp原语实例的流程图,其中(a)为sleep原语实例的流程图,(b)为 wakeUp原语实例的流程图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面通过具体实施例和附图, 对本发明做进一步说明。

本发明提供一种利用程序分析与重构技术实现多应用间网络请求合并发送的方法。其核 心思想是修改并重构移动应用的二进制字节码,替换其使用的网络操作相关的应用编程接口 (API),从而对原有网络操作进行调度,使重构后的应用能合并发送网络请求,达到节省手 机电量的目的。本方法首先对现有移动应用进行程序化分析,找出与网络操作相关的计算逻 辑,并进行相应的重构,最后重新生成网络请求可被调度的应用。本发明有助于提高手机的 续航能力,尤其对于后台应用较多,在省电的同时又希望后台推送正常的用户具有十分重要 的意义。

本发明包含两部分内容:1、实现多应用网络请求能耗优化的应用重构方法;2、网络请 求合并机制。具体技术方案如下:

(1)实现多应用网络请求能耗优化的应用重构方法

现有的移动应用往往利用框架层提供的应用编程接口(ApplicationProgramInterface, API)发送网络请求。本方法利用程序分析和重构,将原应用中调用网络相关的API替换为 可被调度的网络相关API。当应用调用了新的API时,该应用发送的网络请求就会被延迟调 度,进而实现一段时间内的网络请求合并发送。

重构前后,应用的网络请求发送流程变化如图1所示。以天气和邮件应用为例,不论是 天气消息还是邮件消息,都是以一定的时间间隔去发送网络请求。重构前,每次网络请求都 会立即发送,即立即唤醒3G/4G网络模块,网络请求发送完成后,3G/4G模块还会持续消耗 电量数十秒钟,再进入休眠状态。由于两个应用网络请求缺少调度和合并机制,导致多次唤 醒3G/4G网络模块,额外消耗了手机电量。重构后,每次网络请求会根据用户的设置延迟数 秒种至数分钟不等,在被延迟的这段时间里,如果有其他的网络请求,那么这些网络请求就 会被合并,即在同一时刻被发送。这样3G/4G模块仅被唤醒一次,节省了手机的电量。

为了调度运行时多应用发送的网络请求,具体的重构过程包含两个步骤:

(a)利用关键字匹配,找出所有和网络操作相关的类

应用利用现有的框架层提供的网络相关API发送各种网络请求。为使应用的网络请求可 以被调度,本方法首先构建一个现有框架层网络相关操作的关键字库,再根据这个关键字库 找出在应用中所有用到了网络相关API的类。最后对这些类进以下重构操作。

(b)重构网络相关的API

为保证所有网络相关操作均被替换为可调度的网络相关操作,本方法插桩所有网络相关 操作(CallSite),将本次网络相关操作所需的上下文进行封装,传递进对应的调度函数,由调 度器进行调度。如果这个网络操作有返回值,则由这个调度函数返回。这种重构方式可以保 证重构后的程序上下文(Context)的一致性,包括栈(Stack)与堆(Heap)中数据的一致性。根 据网络请求建立的链路的类型,可分为短链接和长链接。短链接即每次请求重新建立手机至 云端的链路,例如HttpRequest;而长链接则是建立起手机与云端的链路后,多次复用这个链 接,例如Socket。调度器针对网络请求的不同类型进行处理,以避免出现大量网络延迟的情 况。

(2)网络请求合并机制

上述的重构过程使运行时的网络相关操作可以被调度器所调度。这些不同应用间的调度 器相互配合,利用网络请求合并机制实现节省手机电量。网络请求合并机制主要包括以下两 个方面:

(a)调度算法抽象

调度算法可以抽象为包含sleep和wakeUp两个原语的一段代码。sleep原语表示对执行本 次网络操作进行延迟。wakeUp原语表示此时3G/4G模块已唤醒,可以发送网络请求,该原 语会唤醒处于延迟中的网络操作。在实现中,本方法提供sleep和wakeUp两个原语的实现。 针对不同的需求,可利用这两个原语实现出不同的调度算法。

(b)多应用间通讯机制

以上算法抽象中,wakeUp原语不仅需要在多线程间进行通讯(即单个应用中),还需要 在多进程间进行通讯(即多个应用间),以实现多应用间的调度器相互配合,完成多应用的网 络请求调度功能。在具体实现中,针对不同平台,可利用各种进程间通讯、消息广播等技术 实现多应用间通讯机制。

实施例:

本节给出了安卓系统中多应用网络请求调度的实现。下面以一段代码为例,介绍重构过 程示例和重构后的运行时体系结构示例。

如图2中(a)图所示,上述代码为重构前后的代码。重构前的网络操作 httpClient.execute(args0),其所需的运行时上下文包括httpClient和args0两个对象。因此被重 构为NetworkStub.execute(httpClient,arg0)。在NetworkStub.execute中,调度算法被激活,网 络操作被延迟。在完成该操作后,再返回原网络操作返回的值。

图2中(b)图为调度器中具体实现的代码,仅用到了sleep和wakeUp两个原语。

在本实施例中,我们实现了一个根据屏幕状态进行调度的调度器,其sleep和wakeUp原 语实例的流程图如图3所示。图3中(a)图为sleep原语实例的流程图。在屏幕关闭时,网络 请求会被延迟发送。被延迟的网络请求在以下三种情况下会被执行:1.接收到wakeUp消息; 2.该请求已达到最大延迟;3.接收到屏幕开启的消息。图3中(b)图为wakeUp原语实例的流程 图。为避免多次发送唤醒消息造成的广播风暴,我们设置了一阀值(30秒)。仅当在这一阀值 内没有发送过唤醒消息,才发送唤醒消息。

经过上述重构,应用所发起的网络请求可被调度、合并。

以上实施例针对是对Davlik字节码进行的实施。本方法也可针对不同的字节码、中间代 码,例如Java字节码、Soot框架下的其它中间表示(intermediaterepresentation),进行相应重 构。

以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可 以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保 护范围应以权利要求书所述为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号