应用资源使用减少的制作方法

文档序号:18192307发布日期:2019-07-17 05:38阅读:305来源:国知局
应用资源使用减少的制作方法

云存储是将数据存储在从互联网或“云端”访问的远程服务器上的数据存储的模型。云存储服务是互联网托管服务,其允许用户将其文件上传和同步到云存储,并且从连接到互联网的诸如移动电话、平板设备或计算机之类的任何设备访问这些文件。

存在诸如microsoftonedrive、dropbox、googledrive、box和appleiclouddrive之类的很多云存储服务。某些操作系统具有与云存储服务交互的备份功能。具体而言,某些操作系统已经内建了与云存储服务的通信。

目前,操作系统之外的应用程序甚至在没有网络连接时,仍继续尝试上传文件、以及尝试多次上传不同的文件而浪费资源。



技术实现要素:

描述了用于减少向云上传内容的应用的资源使用的技术。

应用可以管理用于将在计算设备处接收的内容发送到云服务的上传队列。该内容可以包括但不限于:照片、屏幕截图、保存的文件等等。管理上传队列可以包括:将检测到的新内容添加到上传队列,并且在上传队列中将该新内容指示为是新的。管理上传队列还可以包括:如果新内容成功地发送到云服务,则在上传队列中将该新内容指示为已发送;并且在上传队列中将没能上传的新内容指示为是新的。另外,管理上传队列还可以包括:基于检测到的状态改变对上传队列进行暂停和取消暂停。

该应用可以与计算设备的操作系统通信,以在上传队列被指示为处于未暂停状态时,使用计算设备的网络资源向云服务发送在上传队列中被指示为新的的任何内容。有利地,在新内容过程之外的应用检测到网络连接丢失的网络连接改变和所述网络连接的可用性,使得响应于检测到网络连接的丢失,该应用将上传队列设置为暂停状态,其中在该情况下,即使指示了新内容,也不会执行上传尝试。可以检测其它失败状态,并且用于对队列进行暂停或取消暂停。

提供该概括部分以便用简化的形式介绍将在以下的详细描述中进一步描述的概念选择。本概括部分并不是旨在标识本发明的关键特征或本质特征,也不是旨在用于限制本发明的保护范围。

附图说明

图1示出了可以在其中实施本发明的各个实施例的示例性操作环境。

图2示出了并入如本文所描述的应用资源使用减少的应用的示例性实现。

图3示出了用于在不具有资源使用减少的情况下提供内容的自动上传的方法的示例性过程流程图。

图4a和图4b示出了用于提供资源使用减少的方法的示例性过程流程图。

图5示出了用于提供资源使用减少的方法的示例性过程流程图。

图6示出了并入资源使用减少的应用的示例性用户界面。

图7显示了说明可以在本文所描述的某些实现中使用的计算设备的组件的框图。

具体实施方式

描述了用于减少向云上传内容的应用的资源使用的技术。

应用可以管理用于将在计算设备处接收的内容发送到云服务的上传队列。本文可互换地使用术语“应用”和“app”。此外,本文还可互换地使用术语“发送”和“上传”。该内容可以包括但不限于:照片、屏幕截图、保存的文件等等。管理上传队列可以包括:将检测到的新内容添加到上传队列,并且在上传队列中将该新内容指示为是新的。管理上传队列还可以包括:如果新内容成功地发送到云服务,则在上传队列中将该新内容指示为已发送;并且在上传队列中将没能上传的新内容指示为是新的。另外,管理上传队列还可以包括:基于检测到的状态改变对上传队列进行暂停和取消暂停。

应用可以与计算设备的操作系统通信,以使用计算设备的网络资源向云服务发送在上传队列中被指示为新的的内容。有利地,在上传过程之外,app还可以检测网络连接丢失的网络连接改变和所述网络连接的可用性,使得响应于检测到网络连接的丢失,app将上传队列设置为暂停状态,其中在该情况下,即使指示了新内容,也不会执行上传尝试。

有利地,所描述的技术包括:识别当前网络可用性状态,这导致软件程序减少在没有网络连接时由于多次尝试上传而浪费的资源。此外,在上传过程之外执行网络可用性的检测,使得上传过程不需要在每次检测到新内容时在上传之前都要检查网络连接。

图1示出了可以在其中实现本发明的实施例的示例性操作环境。参见图1,示例性操作环境可以包括操作地耦合到网络155以与云服务145通信的计算设备100、以及其它用户计算设备(没有示出)。云服务145可以由一个或多个服务器(例如,服务器150)实现。

网络155可以是但不限于:蜂窝网络(例如,无线电话)、点对点拨号连接、卫星网络、互联网、局域网(lan)、广域网(wan)、wifi网络、adhoc网络或者其组合。这些网络广泛地用于连接各种类型的网络元件,例如集线器、网桥、路由器、交换机、服务器和网关。网络155可以包括一个或多个连接的网络(例如,多网络环境),其包括诸如互联网的公共网络和/或诸如安全企业专用网络的专用网络。如本领域普通技术人员将理解的,可以经由一个或多个有线或无线接入网络来提供对网络155的访问。

计算设备100可以是但不限于:个人计算机(例如,桌上型计算机)、膝上型计算机、个人数字助理(pda)、移动电话(或智能电话)、平板设备、平板电脑、游戏设备或控制台、智能电视或终端,这些设备可以用于通过网络155访问服务器(例如,服务器150)。服务器150可以是企业服务器、基于云的服务器、专用服务器、主机服务器等等。

显而易见的是,计算设备100可以是任何类型的计算机系统,为其用户提供加载和执行软件程序的能力、以及访问网络(例如,网络155)并且与一个或多个服务器(例如,服务器150)以及其它计算设备(没有示出)通信的能力。

可以如参照图7所示的计算系统700所描述的那样来实现计算设备100。例如,计算设备100被配置为例如通过语音、触摸和/或通过可操作地耦合到计算设备100的键盘和/或鼠标,从用户接收输入。计算设备100还可以包括显示器(例如,计算机监视器),其被配置为向用户显示一个或多个用户界面。在一些例子中,显示器可以是触摸屏,使得计算设备100可以通过显示器接收用户输入。

另外,计算设备100可以配置有一个或多个中央处理单元(cpu)(例如,处理器105)、存储器(例如,高速缓存110)、大容量存储设备(例如,存储系统125)、以及i/o设备(例如,网络接口(如,无线网络/通信接口130和蜂窝网络/通信接口135))和用户输入设备(例如,诸如相机140)。计算设备100的元件可以经由总线彼此进行通信。

计算设备100被配置为执行操作系统120和一个或多个应用程序115。应用程序115可以是从app商店下载的app,其中app商店对底层计算设备100具有有限的访问权。一个这样的程序可以是具有过程500的功能的app116,如图5中所描述的。

操作系统120是用于控制计算设备100的操作的计算机程序。应用程序115是被配置为在操作系统120之上执行以提供各种功能的可执行程序,其可以包括与云存储进行通信的应用(例如,app116)。如图5中所描述的,操作系统120向具有过程500的功能的app116授予访问计算设备100的资源的权限。因此,由于app116具有对于底层计算设备100的有限访问权限,因此app116与操作系统120通信以便访问计算设备100的组件。图1中提供了用于示出该通信的分解视图。

如先前所提及的,app116与作为其特征的一部分的云服务145进行通信,以便例如交换内容。app116通过操作系统120,以便通过网络与云服务145进行通信;操作系统120允许app116访问网络接口(例如,网络/通信接口130或蜂窝网络/通信接口135)。

app116管理用于将内容发送到云服务145的上传队列。上传队列可以是存储在app数据资源117处的数据结构。该app数据资源可以是计算设备100(通过操作系统120)向app116分配的存储系统125的一部分,其允许app116控制在该存储部分中发生的事情。上传队列数据结构可以是标识要上传到云服务145的内容的数据库表。该数据库表可以包括指示内容是新的、已发送、还是失败的信息。例如,新的指示可以表示内容已准备好上传到云服务145;已发送的指示可以表示内容已成功地上传到云服务145;并且失败的指示可以表示尝试将内容上传到云服务145是不成功的。

其它有用信息(例如,帮助app116管理上传队列的信息)可以存储在app数据资源117中。例如,app数据资源117可以包含错误信息和上传队列的暂停状态信息。

app116通过一个或多个应用程序接口(ap1)与操作系统120进行通信。通过图7提供了对api的进一步描述。

通过api,操作系统120可以提供触发功能。app116可以向操作系统120注册,允许app116接收与注册的触发相关联的通知。例如,app116可以针对网络改变触发进行注册。随后,如果网络连接的状态例如从可用的网络连接改变为没有可用的网络连接,则app116从操作系统120接收该改变的通知,并且app116可以采取适当的动作。此外,app116可以针对内容改变触发进行注册。内容改变触发可以针对于特定的指定文件夹,或者针对于通常的多个文件夹(或者计算设备100上的任何位置)。利用内容改变触发,如果内容在指定文件夹中改变(特定的或通常的),则app116从操作系统120接收该改变的通知,并且app116可以采取适当的动作。例如,给定针对相机胶卷的内容改变触发的注册,如果用计算设备100的相机拍摄了照片并且存储在相机胶卷上,则app116从操作系统120接收相机胶卷的改变的通知,并且app116可以采取适当的动作。

图2示出了并入诸如本文所述的应用资源使用减少的应用的示例性实现。参见图2,app116包含上传队列管理模块210、新内容模块215、故障检测模块220和上传模块230。另外,app116可以包括与app116的各种功能相关联的其它模块。

上传队列管理模块210包括与上传队列的管理相关联的功能,以用于将在计算设备处接收的内容发送到云服务。该内容可以包括但不限于:已保存到计算设备的已保存的文件、照片、屏幕截图等等。例如,上传队列管理模块210从新内容模块215接收新内容的标识,并且将新内容包括为上传队列数据结构中的条目。另外,上传队列管理模块210可以在上传队列中将新内容指示为是新的,其允许上传模块230知道该新内容已准备好发送到云服务。在从上传模块230接收到不成功上传的通信之后,上传队列管理模块210可以在上传队列中将失败的内容指示为新内容,其允许上传模块230知道该失败的内容已准备好再次发送到云服务。此外,在从上传模块230接收到成功上传的通信之后,上传队列管理模块210可以在上传队列中将该新内容指示为已发送。

此外,上传队列管理模块210可以通过例如存储标志或者使用暂停位来指示上传队列处于暂停状态,从而将上传队列置于暂停状态或未暂停状态。如果上传队列处于暂停状态,则即使上传队列管理模块210指示新内容,上传模块230也不执行上传尝试。具体而言,如果上传队列处于暂停状态,则上传模块230可以不与操作系统通信来将新内容发送到云服务。此外,如果上传队列被设置为未暂停状态,则上传模块230可以与操作系统通信以将上传队列管理模块210指示的新内容发送到云服务。有利地,上传模块230可以依赖上传队列的暂停或未暂停状态来确定动作。

上传模块230包括与向云存储服务发送内容相关联的功能。例如,当上传队列包括上传队列管理模块210指示为新的的内容并且处于未暂停状态时,上传模块230与计算设备的操作系统进行通信以使用计算设备的网络资源将新内容发送到云服务。例如,操作系统可以允许上传模块230访问网络接口(例如,无线网络/通信接口或者蜂窝网络/通信接口)。

另外,app116可以向操作系统注册触发,允许在新内容存储在设备上时或者如果存在网络连接改变或其它状态改变时,app116接收通知。新内容模块215包括与检测新内容相关联的功能。新内容模块215可以以各种方式检测新内容。例如,当app116接收到指示内容改变的通知时,新内容模块215可以经由操作系统访问存储系统并且识别新内容,其允许上传队列管理模块210将新内容包括为上传队列数据结构中的条目。

此外,新内容模块215还可以通过识别设备已经接收到输入(例如,正在使用相机)来检测新内容,而无需从操作系统接收通知。随后,新内容模块215可以在介质存储中查找新内容。

故障检测模块220包括与检测系统中的变化(例如,网络连接改变或状态改变)相关联的功能。例如,故障检测模块220可以检测网络连接丢失的网络连接改变和所述网络连接的可用性,使得响应于检测到网络连接的丢失,故障检测模块220与上传队列管理模块210进行通信,其允许上传队列管理模块210将上传队列设置为暂停状态(其中在该情况下,即使指示了新内容,也不会执行上传尝试)。此外,响应于故障检测模块220检测到网络连接的可用性并且进行传送,上传队列管理模块210可以将上传队列设置为未暂停状态。有利地,故障检测模块220可以在上传过程之外操作。

在另一个例子中,如果app116接收到对没能将在上传队列中被指示为新的的内容发送到云服务的失败指示,则app116可以存储该失败指示。该失败指示可以指示已知错误,例如网络连接错误。故障检测模块220可以检测在存储的故障指示中接收的已知错误,随后与操作系统通信以确认该已知错误。如果操作系统确认了该已知错误,则故障检测模块220可以通过将上传队列置于暂停状态来与上传队列管理模块210进行通信以暂停上传队列,并且在上传队列中将失败的内容指示为新的。故障检测模块220还可以经由操作系统,通过用户界面向用户通知该错误。这可以允许用户修复错误,并且可以通过将上传队列设置为未暂停状态来恢复内容的上传。

图3示出了用于在不减少资源使用的情况下,提供内容的自动上传的当前方法的示例性过程流程图。如先前所描述的,应用可以对底层系统具有有限的访问权限,因此具有严格的资源限制。参见图3,过程300是由于这些约束而可能出现的问题的例子。

在特定示例中,云存储app可以具有将内容上传到用户云存储的功能。该功能可以自动地检测新内容(例如,照片、屏幕截图、以及保存的文件),并且将其上传到用户的云存储帐户。但是,如果用户没有该app可以用于上传这些文件的网络连接,则该功能可能会开始失败(breakdown)。检测到的任何文件都添加到上传队列中,并且app尝试上传这些文件。但是,由于计算设备没有可用的网络连接,因此该文件上传失败。因此,app可能正在使用电池电源、内存、cpu系统和其它系统资源尝试上传注定会失败的文件。此外,一旦该文件失败,可能无法清除故障,并且当设备重新连接到网络连接时该文件将不会自动上传。

更详细地,app可以向用户的计算设备的操作系统注册一个或多个触发(305),其允许app接收与注册的触发相关联的通知。随后,当拍摄了照片并且将其存储在设备上时,操作系统将向app通知存在新照片(310)。当app从操作系统接收到新照片的通知时(315),app可以检测新照片,并且通过在上传队列中将新照片指示为新的来将新照片添加到上传队列(320)。

如图3中所示,设备可能已丢失网络连接。但是,由于新照片被指示为新的并且因此准备好上传,因此app将尝试通过与操作系统的api激活网络来上传新照片(325)。尝试的上传使用设备的网络资源(330),并且由于网络连接的丢失,上传新照片的尝试发生失败。操作系统指示该上传的失败(335),app接收失败指示(340)。由于app可能在不知道上传尝试为何失败的情况下接收到失败指示,因此app不知道不应再次尝试上传。因此,app会多次地尝试上传新照片(345)。app尝试上传的次数可以是基于策略规则。对于每次尝试上传,app可以使用设备的网络资源(350);在每一次,如果网络连接仍然关闭,则上传尝试可能会失败。此外,每次操作系统向app都发送失败指示而不指示已知错误(355)。app接收失败指示(360),并且在根据策略规则尝试指定次数的上传之后,app在上传队列中将该新照片指示为失败(365),而不提供关于上传尝试为何失败的原因。

另外,在这种场景中,当网络仍然关闭时,可能拍摄另一张照片并且操作系统向app通知该新照片(370)。该过程可能会持续多次,并且每次尝试上传都失败,同时使用网络资源,这都是因为没有错误指示。

图4a和4b示出了用于提供资源使用减少的方法的示例性过程流程图;图5示出了用于提供资源使用减少的方法的示例性过程流程图。

根据各种示例,app可以检测是否没有网络连接,或者是否存在失败状态,并且在新内容进入后仍然检测到任何新内容。app可以将新内容添加到上传队列。但是,app可能实际上并未上传该新内容,这是因为app知道上传将失败,并且使用该知识对上传队列进行暂停和取消暂停。当设备获得可用的网络连接或者返回到成功状态时,app可以检测到连接,随后对上传队列取消暂停,以便新内容可以再次开始上传到云服务。有利地,app可以独立地检测并且考虑网络连接状态或失败状态,随后在网络连接断开或系统包含故障状态时停止上传队列进行上传,从而减少资源使用。

图4a和4b提供了用于示出如何执行资源使用减少的更详细描述。图4a描述了在识别出用于上传队列的新内容之后,识别网络连接错误的场景,图4b描述了在识别出用于上传队列的新内容之前,识别网络连接错误的场景。

如图4a和4b的场景所示,可以避免图3中的过程300描述的情况,其中在图3的场景中,app可能重试多次进行上传内容的尝试。

参见图4a,app可以向操作系统(402)注册一个或多个触发,以在增加新内容或网络连接状态改变时获得通知,或者更具体地,当实现该app的设备丢失或获得连接时获得通知。例如,window操作系统的microsoftonedriveapp使用两个触发来判断是否没有网络连接或者新内容。这些触发可以包括网络改变触发和可从操作系统获得的内容改变触发。例如,网络改变触发可以是使用网络状态改变(networkstatechange)类型的系统触发(systemtrigger)、以及报告故障是由web错误状态操作取消(weberrorstatus.operationcanceled)引起的单个文件上传故障。可以将这些触发设置为始终运行,而不是仅在存在网络连接时运行。因此,即使没有网络连接,app也可以检测内容并且将内容添加到上传队列。如果文件上传失败并且app接收到web错误状态操作取消的错误指示,则app检查当前连接状态并且在没有网络连接时暂停上传队列。此外,当app通过网络状态改变触发获得网络状态已改变的通知时(例如,获得wi-fi连接或丢失数据连接),随后app将检查是否存在可用的网络连接。

在app注册一个或多个触发(402)并且当拍摄了照片并存储在设备(例如,存储在相机胶卷中)上时,操作系统可以向app通知新照片(404)。app可以接收新照片的通知(406),继续检测新照片并且将该新照片添加到上传队列(408)。例如,app可以在上传队列中将新照片指示为新的,并且因此准备好发送到云服务。

一旦在上传队列中将新照片指示为新的,则app通过与操作系统的api,可以激活网络并且尝试上传新照片(410),这些操作使用设备的网络资源(412)。但是,如果设备在尝试上传新照片(410)之前丢失网络连接(如在该场景中所示),则该上传尝试将失败。如果上传失败,则操作系统向app传送失败的指示(414),其可以报告上传新内容的失败、以及失败的原因(例如,引起失败的错误类型)。例如,由于app已注册了网络改变触发,因此操作系统可以报告该故障是由已知的网络错误(例如,web错误状态操作取消)引起的。

在一些例子中,如果app接收到失败指示(416),则app可以存储网络失败的指示。随后,app可以检测已知的网络错误,将照片指示为无错误,并且暂停上传队列(418)。例如,当app从操作系统接收到失败指示时,该失败指示可以包括错误类型(例如,网络连接错误)。app可以检查接收到的错误的类型,如果错误是网络连接错误,则app可以通过与操作系统通信来检查网络的当前状态,并且在没有可用的网络连接时暂停上传队列。有利地,app还可以通过将失败的内容(例如,当前上传的内容)指示为新内容,将失败的内容放回到上传队列中。因此,当设备重新获得网络连接时,先前失败的内容将被指示为新的并且自动进行上传。

在各种示例中,不是在确定没有可用的网络连接之后暂停上传队列,而是app可以向用户发送用于指示存在网络错误的错误消息,并且为了修复该错误,用户应当连接到网络。随后,如果用户连接到网络,则app可以通过取消暂停上传队列来尝试再次上传内容。

暂停上传包括将上传队列设置为暂停状态,在该情况下,即使指示了新内容,也不会执行上传尝试。取消暂停上传包括将上传队列设置为未暂停状态,在该情况下,如果指示了新内容,则执行上传尝试。app可以通过各种方式将上传队列设置为暂停状态。例如,app可以存储用于指示上传队列是暂停还是未暂停的暂停位或标志。

如在该场景中所示,在仍未连接网络时,设备拍摄并且存储了新照片。随后,操作系统向app通知新照片(420),并且app接收新照片的通知(422)。随后,app可以检测新照片并且将新照片添加到上传队列(424)。在该情况下,由于上传队列暂停,因此app不会尝试上传新内容。

当设备重新获得网络连接时,操作系统可以向app通知网络连接改变(426)。如先前所描述的,当app例如通过网络改变触发接收到网络连接改变的通知时(428),app通过检测网络连接的状态来检查是否存在可用的网络连接(430),其可以包括与操作系统通信以确认可用的网络连接。由于重新获得网络连接,因此app检测到可用的网络连接并且取消暂停上传队列(432)。app通过与操作系统的api,可以激活网络并且尝试再次对上传队列(434)中的新照片进行上传。

参见图4b,应用可以向操作系统(452)注册一个或多个触发,以在存在新内容或网络连接状态改变时获得通知(更具体地,当计算设备丢失连接或获得连接时获得通知)。如该场景中所示,如果在应用注册一个或多个触发(452)之后,设备丢失了网络连接,则操作系统向app通知网络连接改变(454)。

app可以从操作系统接收网络连接改变的通知(456),随后通过与操作系统通信以确认没有可用的网络连接来继续检测网络连接的状态(458)。在一些例子中,如先前所描述的,在确定没有可用的网络连接之后,app可以向用户发送错误消息,其指示存在网络错误以及如何修复该错误。随后,如果用户修复了错误并且连接到网络,则该应用通过将上传队列设置为未暂停状态来恢复上传内容。

一旦app检测到没有网络连接,则app就可以使用任何先前描述的方法来暂停上传队列(460)。当上传队列处于暂停状态时,即使在上传队列中指示了新内容,也不会执行上传尝试。

如该场景中所示,如果在没有网络连接的情况下,拍摄了照片并且将其存储在系统中,则操作系统将向app通知新照片(462)。当app接收到新照片的通知时(464),app可以随后检测新照片并且将该新照片添加到上传队列(466)。但是,由于上传队列处于暂停状态,因此新照片可以添加到上传队列中,但不会尝试上传新照片。

如该场景中所示,当设备重新获得网络连接时,操作系统向app通知网络连接改变(468),并且app接收网络改变的通知(470)。一旦app接收到网络改变的通知(470),app就通过与操作系统通信以确认存在可用的网络连接,来检测网络连接的状态(472),并且取消暂停上传队列(474)。一旦上传队列处于未暂停状态,则app尝试上传先前已添加到上传队列的新照片(476)。

参见图5,除了网络连接的丢失之外,该资源使用减少可以用于各种各样的失败状态情况。在过程500期间,app可以检测到失败状态的存在。app可以以各种方式来检测失败状态。例如,app可以注册触发(例如,内容改变触发和网络改变触发),如先前所描述的。再举一个例子,app可能具有运行的线程,并且在无需首先被操作系统通知的情况下继续检测失败状态的存在。

如果设备进入了失败状态(其中,应用已注册了从操作系统接收某种类型的触发),则操作系统可以向app通知状态改变(505)。在一些情况下,失败状态是该应用识别的某种状况,而不是设备错误。例如,由于服务器(该应用与之通信以上传内容)超过特定用户的配额,则可能会发生失败状态。例如,如果云存储限制每个用户的存储量(例如,5gb的存储),则用户可能已经在云存储中填充满了向他分配的存储空间,从而导致失败状态。可能发生失败状态的另一个例子是云存储的用户密码是否已过期。

app可以从操作系统接收状态改变的通知(510),然后通过与操作系统通信以确认失败状态来检测状态改变的状况(515)。一旦app检测到存在失败状态,app就可以通过任何先前描述的方法来暂停上传队列(520)。当上传队列处于暂停状态时,即使在上传队列中指示了新内容,也不会执行上传尝试。

在各种示例中,在从操作系统接收到状态改变的通知、确认失败状态、以及将上传队列设置为暂停状态之后,app可以通过用户界面与用户通信错误消息。该错误消息可以指示失败状态的类型以及如何修复该失败状态。如果用户选择修复失败状态,则app可以通过将上传队列设置为未暂停的暂停状态,来恢复与操作系统的通信以发送上传队列的内容。

如该场景中所示,当设备仍处于失败状态时,可能创建新内容并且将其存储在系统中。该新内容可以包括但不限于保存的文件、照片、屏幕截图等。随后,操作系统可以向app通知新内容(525)。当app接收到新内容的通知时,app可以随后检测新内容并且将新内容添加到上传队列(535),检查上传队列的暂停状态(540)。由于上传队列处于暂停状态,因此将新内容添加到上传队列,但不会尝试上传新照片。

如该场景中所示,当设备返回到成功状态时,操作系统可以向app通知状态改变(545),app可以接收状态改变的通知(550)。一旦app接收到状态改变的通知(550),app就可以通过与操作系统通信以确认成功状态来检测状态改变的状况(555),然后取消暂停上传队列(560)。一旦上传队列处于未暂停状态,则app就可以通过与操作系统的api来激活网络,并且尝试上传先前已添加到上传队列的新照片(565)。

图6示出了并入应用资源使用减少的应用的示例性用户界面。参见图6,用户可以通过用户界面(ui)(例如,ui602)与运行诸如app116之类的app的计算设备600进行交互,以输入用户输入并且接收显示的输出。

计算设备(例如,计算设备600)被配置为通过例如键盘、鼠标、跟踪板、触摸板、触摸屏、麦克风、相机、眼睛注视跟踪器或其它输入设备从用户接收输入。ui使用户能够与在计算设备600上运行或通过计算设备600显示的各种应用进行交互。通常,ui被配置为使得用户可以容易地与应用的功能进行交互。例如,用户可以简单地选择(通过例如触摸、点击、手势或语音)ui内的选项(例如,取消命令620或网络设置命令615)来执行计算设备600的操作。

如图所示,app(例如,app116)向用户提供ui(例如,ui610),其中该ui向用户通知失败状态(例如,没有网络连接或云存储已满)。用户可以基于失败状态来选择修复故障。例如,在所示出的网络连接失败的情况下,实现app的计算设备600可以为用户提供ui610。ui610可以向用户显示由于网络错误导致上传尝试失败、以及如何纠正该故障的消息。例如,如果计算设备600丢失网络连接,如图6中所示,当用户使用计算设备600的相机拍摄了照片并且在ui602的最近照片部分605中观看这些照片(例如,相机胶卷)时,可以向用户提供显示错误消息625的ui610。错误消息625可以表示“上传照片错误:无网络连接”和“继续上传:连接到网络”。

在一些情况下,连同错误消息625,可以提供网络设置命令615以允许用户改变计算设备600的网络设置,例如连接到wi-fi或者改变设置以允许app上传上传队列中的内容。如果用户修复了网络连接的丢失,则app通过将上传队列设置为未暂停状态来恢复上传内容。在一些情况下,如果用户不想改变网络设置,则用户可以选择取消命令620,上传队列将保持暂停,直到计算设备600获得网络连接为止。虽然所示出的ui602显示了阻止appui602并且需要用户交互的错误消息,但是错误消息ui610可以是被动用户,其用于向用户通知上传已暂停和/或存在错误。在被动ui的一些实现中,可以在被动ui中包括超链接以建议用户可以纠正该错误的位置。当然,在主动ul中也可以包括超链接。

图7显示了说明可以在本文所描述的某些实现中使用的计算设备的组件的框图。系统700可以在单个计算设备内实现,或者分布在协作地执行程序指令的多个计算设备或子系统上。系统700可以用于实现无数的计算设备,这些计算设备包括但不限于个人计算机、平板计算机、读取器、移动设备、个人数字助理、可穿戴计算机、智能电话、膝上型计算机(笔记本或上网本)、游戏设备或控制台、桌上型计算机或智能电视。因此,可以并入关于系统700描述的更多或更少的元件以实现特定的计算设备。

例如,系统700包括处理器705,处理器705根据与设备操作系统(os)715交互的一个或多个应用程序710的指令来处理数据。处理器705的例子包括通用中央处理单元、专用处理器和逻辑设备、以及任何其它类型的处理设备、其组合或变型。

应用程序710、os715和其它软件可以加载到并且存储在存储系统720中。设备操作系统715通常控制和协调计算设备中的各种组件的功能,为应用连接类似于网络接口的低层级接口提供更简单的方式。操作系统的非限制性示例包括来自microsoft公司的windows、来自apple公司的ios、来自google公司的androidos、来自microsoft的windowsrt以及来自canonical的ubuntu各种版本的linuxos。

应当注意,os715可以在计算设备上本地实现,也可以在本机设备os上运行的软件虚拟化层上实现。虽然没有在图7中描述虚拟化的os层,但可以认为其是os715空间内的附加嵌套分组,每个分组包含os、应用程序和api。应用程序710可以通过api来访问系统700的某些功能。

api是由程序代码组件或硬件组件(下文称为“api实现组件”)实现的接口,其允许不同的程序代码组件或硬件组件(下文中称为“api调用组件”)访问和使用ap1实现组件提供的一个或多个功能、方法、过程、数据结构、类和/或其它服务。api可以规定在api调用组件和api实现组件之间传递的一个或多个参数。

api允许api调用组件的开发者(其可以是第三方开发者)利用由ap1实现组件提供的指定特征。可以存在一个api调用组件或者可以存在一个以上的这样组件。api可以是计算机系统或程序库提供的源代码接口,以支持来自应用程序的服务请求。操作系统可以有多个api以允许在操作系统上运行的应用程序调用这些api中的一个或多个,服务(例如,程序库)可以具有多个api以允许使用该服务的应用程序调用这些api中的一个或者多个。可以根据在构建应用程序时解释或编译的编程语言来指定api。

在一些实现中,ap1实现组件可以提供一个以上的api,每个api提供访问api实现组件所实现的功能的不同方面的不同视图或者其不同方面。例如,api实现组件的一个api可以提供第一组功能并且向第三方开发者公开,可以隐藏(不公开)api实现组件的另一个api,其提供第一组功能的一个子集,还提供另一组功能(例如,测试或调试不属于第一组功能的功能)。在其它情况下,api实现组件本身可以通过底层api调用一个或多个其它组件,因此其既是api调用组件又是api实现组件。

api规定api调用组件在访问和使用api实现组件的指定功能时使用的语言和参数。例如,api调用组件通过一个或多个api调用或者由api公开的调用(例如,通过函数或方法调用来实现)访问api实现组件的指定功能,通过api调用或启用,使用参数来传递数据和控制信息。api实现组件可以响应于来自api调用组件的api调用而通过api返回值。虽然api规定了api调用的语法和结果(例如,如何使用api调用以及api调用的作用),但是api可能不会揭示api调用如何完成该api调用指定的功能。在调用方(ap1调用组件)和ap1实现组件之间通过一个或多个应用程序接口来传送各种api调用。传送api调用可以包括:发出、发起、使用、调用、接收、返回或响应函数调用或消息;换言之,该传送可以描述api调用组件或api实现组件中的任意一个的动作。api的函数调用或其它调用可以通过参数列表或其它结构来发送或接收一个或多个参数。

此外,数据类型或类可以由api提供并且由api实现组件来实现。因此,api调用组件可以通过使用api中提供的定义,来声明变量、使用指针、使用或实例化这些类型或类的常量值。

通常,api可以用于访问由api实现组件提供的服务或数据,或者用于启动由api实现组件提供的操作或计算的执行。举例而言,api实现组件和api调用组件可以是操作系统、库、设备驱动程序、api、应用程序或其它模块中的任何一个(应当理解,api实现组件和api调用组件可以是彼此相同或不同类型的模块)。在一些情况下,可以至少部分地利用固件、微代码或其它硬件逻辑来体现ap1实现组件。在一些情况下,api可以允许客户端程序使用软件开发工具包(sdk)库提供的服务。在其它情况下,应用程序或其它客户端程序可以使用由应用程序框架提供的api。这里,应用程序或客户端程序可以并入对于sdk提供的和api提供的函数或方法的调用,或者使用在sdk中规定并且由api提供的数据类型或对象。例如,应用程序框架可以为响应框架定义的各种事件的程序提供主事件循环。api允许应用程序使用应用程序框架来指定事件和对事件的响应。在一些实现中,api调用可以向应用程序报告硬件设备的能力或状态,其包括与诸如以下方面相关的那些能力或状态:输入能力和状态、输出能力和状态、处理能力、功率状态、存储容量和状态、通信能力等等,可以部分地通过固件、微代码或者部分在硬件组件上执行的其它低级逻辑来实现api。

api调用组件可以是本地组件(即,在与api实现组件相同的数据处理系统上)或远程组件(即,在与api实现组件不同的数据处理系统上),其中远程组件经由网络(例如,网络155)通过api与api实现组件进行通信。应当理解的是,api实现组件还可以充当api调用组件(即,它可以对不同api实现组件公开的api进行api调用),api调用组件也可以通过实现暴露给不同api调用组件的api来充当为api实现组件。

api可以允许以不同编程语言编写的多个api调用组件与api实现组件通信(因此api可以包括用于在api实现组件和api调用组件之间转换调用和返回的特征);但是,可以根据特定的编程语言来实现api。在一些情况下,api调用组件可以调用来自不同提供者的api,例如来自操作系统提供者的一组api和来自插件提供者的另一组api以及来自另一个提供者(例如,软件库的提供者)或另一组api的创建者的另一组api。

api、api实现组件和api调用组件可以存储在存储系统720中。

存储系统720可以包括可由处理器705读取并且能够存储软件(例如,应用程序710和os715)的任何计算机可读存储介质。

存储系统720可以包括以任何方法或技术实现的用于存储诸如计算机可读指令、数据结构、程序模块或其它数据之类的信息的易失性和非易失性、可移动和不可移动介质。存储介质的示例包括随机存取存储器、只读存储器、磁盘、光盘、闪存、虚拟存储器和非虚拟存储器、盒式磁带、磁带、磁盘存储器或其它磁存储设备、或者任何其它适当的存储介质。在任何情况下,存储介质都不是传播信号。除了存储介质之外,在一些实现中,存储系统720还可以包括软件能够通过其在内部或外部进行通信的通信介质。存储系统720可以实现为单个存储设备,但也可以跨多个存储设备或子系统来实现,这些存储设备或子系统相对于彼此同处一地或者是分布式的。存储系统720可以包括能够与处理器705进行通信的其它元件(例如,控制器)。

在各种实现中,经由系统700存储的数据/信息可以包括本地存储在该设备上的数据高速缓存(例如,高速缓存725),或者数据可以存储在能够由该设备经由网络/通信接口735或者经由该设备与和该设备相关联的单独计算设备(例如,诸如互联网之类的分布式计算网络中的服务器计算机)之间的有线连接来访问的任何数量的存储介质上。应当理解的是,设备可以经由网络/通信接口735或者分布式计算网络访问这样的数据/信息。类似地,可以根据包括电子邮件和协作式数据/信息共享系统的公知数据/信息传送和存储装置,在用于存储和使用的计算设备之间容易地传送这样的数据/信息。

软件可以在程序指令等等其它功能中实现,当这些程序指令通常由系统700或特别是处理器705执行时,指导系统700或处理器705如本文所述地进行操作。软件可以包括其它的处理、程序或组件(例如,操作系统软件或其它应用软件)。软件还可以包括固件或者可由处理器705执行的一些其它形式的机器可读处理指令。

通常,当将软件加载到处理器705中并且执行时,可以整体地将计算系统700从通用计算系统转换成专用计算系统,该专用计算系统被定制为有助于减少资源使用,如本文针对每个实现所描述的。事实上,存储系统720上的编码软件可以变换存储系统720的物理结构。物理结构的这种特定变换可以取决于本说明书的不同实现中的各种因素。这些因素的示例可以包括但不限于:用于实现存储系统720的存储介质的技术、以及计算机存储介质是表征为主存储还是辅助存储。

例如,如果将计算机存储介质实现为基于半导体的存储器,则在将程序编码在其中时,软件可以变换半导体存储器的物理状态,例如通过变换晶体管、电容器或者构成半导体存储器的其它离散电路元件的状态。对于磁介质或光介质,可以发生类似的变换。在不脱离本说明书的保护范围的情况下,物理介质的其它变换也是可能的,其中提供前述示例仅仅用于促进该讨论。

替代地或另外地,本文描述的功能、方法和过程可以至少部分地由一个或多个硬件模块(或者逻辑组件)来实现。例如,硬件模块可以包括但不限于专用集成电路(asic)芯片、现场可编程门阵列(fpga)、片上系统(soc)系统、复杂可编程逻辑器件(cpld)、以及现在已知或稍后开发的其它可编程逻辑器件。在激活硬件模块时,硬件模块执行这些硬件模块中包含的功能、方法和处理。

应当注意的是,可以将系统700的许多元件包括在片上系统(soc)设备中。这些元件可以包括但不限于处理器705、网络/通信接口735、音频接口740、视频接口745、以及甚至存储系统720的元件。

网络/通信接口735可以包括允许通过一个或多个通信网络(没有示出)与其它计算系统进行通信的通信连接和设备。一起允许系统间通信的连接和设备的示例可以包括网络接口卡、天线、功率放大器、rf电路、收发器和其它通信电路。这些连接和设备可以通过通信介质(例如,金属、玻璃、空气、或任何其它适当的通信介质)进行通信,以与其它计算系统或系统网络交换通信。去往和来自网络/通信接口735的传输由os715控制,os715在必要时向应用和api通知通信事件。

接口设备750可以包括输入设备,例如相机755、鼠标(没有示出)、跟踪板(没有示出)、键盘(没有示出)、麦克风(没有示出)、用于从用户接收触摸手势的触摸设备(没有示出)、用于检测用户的非触摸手势和其它动作的动作输入设备(没有示出)、以及能够接收用户输入的其它类型的输入设备及其相关联的处理元件。

接口设备750还可以包括输出设备,例如显示屏(没有示出)、扬声器(没有示出)、用于触觉反馈的触觉设备、以及其它类型的输出设备。在某些情况下,可以将输入设备和输出设备组合在单个设备中,例如,既描绘图像又从用户接收触摸手势输入的触摸屏显示器。可以以各种方式在显示器上描绘视觉输出,其呈现图形用户界面元素、文本、图像、视频、通知、虚拟按钮、虚拟键盘或者能够以视觉形式描绘的任何其它类型的信息。其它类型的用户界面也是可能的。用户界面750还可以包括由os715执行的相关用户界面软件,以支持各种用户输入和输出设备。这种软件使用规定的机制,帮助os将用户界面硬件事件传送到应用程序710。

应当理解的是,实现系统700的任何移动或桌面计算设备可以具有另外的特征或功能,并且其并不限于本文所描述的配置。

本发明的某些方面提供以下非限制性的实施例。

示例1。一种减少在计算设备上运行的应用的资源使用的方法,所述方法包括:在所述计算设备处,管理用于向云服务发送在所述计算设备处接收的内容的上传队列;检查所述上传队列的状态,所述状态包括所述上传队列被指示为处于未暂停状态还是暂停状态;在检查所述上传队列的所述状态以后并且当所述上传队列被指示为处于所述未暂停状态时,在所述计算设备处通过使用所述计算设备的网络资源,向所述云服务发送在所述上传队列中被指示为新的的内容来执行上传过程;检测网络连接丢失的网络连接改变和所述网络连接的可用性,其中响应于检测到所述网络连接丢失,将所述上传队列设置为所述暂停状态。检测所述网络连接发生在响应于上传队列中的新内容而上传内容的过程之外。

示例2。根据示例1所述的方法,还包括:检测新内容;响应于检测到所述新内容,在所述上传队列中将所述新内容指示为新的;如果所述上传队列处于所述暂停状态,则不与操作系统通信来将所述新内容发送到所述云服务;如果所述上传队列处于未暂停状态,则与所述操作系统通信以将所述新内容发送到所述云服务。

示例3。根据示例1或示例2所述的方法,其中,检测网络改变包括:接收对没能将所述上传队列中被指示为新的的所述内容发送到所述云服务的失败指示,其中,所述失败指示用于指示网络连接错误。

示例4。根据示例1到示例3中的任何一个所述的方法,还包括:向所述操作系统注册以接收用于通知网络连接改变的触发,其中检测网络改变包括:接收所述网络连接改变的通知。

示例5。根据示例1到示例4中的任何一个所述的方法,其中,管理所述上传队列包括:响应于检测到新内容,在所述上传队列中将所述新内容指示为新的;如果所述新内容成功地发送到所述云服务,则在所述上传队列中将所述新内容指示为已发送。

示例6。根据示例1到示例5中的任何一个所述的方法,其中,响应于检测到所述网络连接可用性,将所述上传队列设置为所述未暂停状态。

示例7。根据示例1到示例6中的任何一个所述的方法,其中,所述内容包括照片、屏幕截图、以及保存的文件中的至少一个。

示例8。一种系统,包括:处理系统;一个或多个计算机可读存储介质;存储在所述一个或多个计算机可读存储介质上的上传队列;存储在所述一个或多个计算机可读存储介质上的操作系统;存储在所述一个或多个计算机可读存储介质上的以程序指令体现的应用,当所述程序指令由所述处理系统执行时,指导所述处理系统至少进行以下操作:管理用于向云服务发送内容的上传队列;检查所述上传队列的状态,所述状态包括所述上传队列被指示为处于未暂停状态还是暂停状态;在检查所述上传队列的所述状态以后并且当所述上传队列被指示为处于所述未暂停状态时,通过使用所述计算设备的网络资源,向所述云服务发送在所述上传队列中被指示为新的的内容来执行上传过程;检测失败状态和成功状态的状态改变,其中响应于检测到所述失败状态,将所述上传队列设置为所述暂停状态。检测所述网络连接发生在响应于上传队列中的新内容而上传内容的过程之外。

示例9。根据示例8所述的系统,其中,存储在所述一个或多个计算机可读存储介质上的所述程序指令还指导所述处理系统进行以下操作:响应于检测到新内容,在所述上传队列中将所述新内容指示为新的;如果所述上传队列处于所述暂停状态,则不与所述操作系统通信来将所述新内容发送到所述云服务;如果所述上传队列处于未暂停状态,则与所述操作系统通信以将所述新内容发送到所述云服务。

示例10。根据示例8或9所述的系统,其中,指导所述处理系统检测所述失败状态和所述成功状态的所述状态改变的所述指令,指导所述处理系统至少进行以下操作:接收对没能将所述上传队列中被指示为新的的所述内容发送到所述云服务的失败指示,其中,所述失败指示用于指示已知错误。

示例11。根据示例8到示例10中的任何一个所述的系统,其中,指导所述处理系统检测所述失败状态和所述成功状态的所述状态改变的所述指令,指导所述处理系统至少进行以下操作:向所述操作系统注册以接收用于通知状态改变的触发;接收所述状态改变的通知。

示例12。根据示例8到示例11中的任何一个所述的系统,其中,指导所述处理系统管理所述上传队列的所述指令,指导所述处理系统至少进行以下操作:响应于检测到新内容,在所述上传队列中将所述新内容指示为新的;如果所述新内容成功地发送到所述云服务,则在所述上传队列中将所述新内容指示为已发送。

示例13。根据示例8到示例12中的任何一个所述的系统,其中,响应于检测到所述成功状态,将所述上传队列设置为未暂停状态。

示例14。根据示例8到示例13中的任何一个所述的系统,其中,所述内容包括照片、屏幕截图、以及保存的文件中的至少一个。

示例15。存储有应用的一个或多个计算机可读存储介质,当所述应用被处理系统执行时,指导所述处理系统执行包括以下操作的方法:在所述计算设备处,管理用于向云服务发送在所述计算设备处接收的内容的上传队列;检查所述上传队列的状态,所述状态包括所述上传队列被指示为处于未暂停状态还是暂停状态;在检查所述上传队列的所述状态以后并且当所述上传队列被指示为处于所述未暂停状态时,在所述计算设备处通过使用所述计算设备的网络资源,向所述云服务发送在所述上传队列中被指示为新的的内容来执行上传过程;检测网络连接丢失和网络连接可用性的网络连接改变,其中响应于检测到所述网络连接丢失,将所述上传队列设置为所述暂停状态。检测所述网络连接发生在响应于上传队列中的新内容而上传内容的过程之外。

示例16。根据示例15所述的介质,还包括:检测新内容;响应于检测到所述新内容,在所述上传队列中将所述新内容指示为新的;如果所述上传队列处于所述暂停状态,则不与操作系统通信来将所述新内容发送到所述云服务;如果所述上传队列处于未暂停状态,则与所述操作系统通信以将所述新内容发送到所述云服务。

示例17。根据示例15或示例16所述的介质,其中,检测网络改变包括:接收对没能将所述上传队列中被指示为新的的所述内容发送到所述云服务的失败指示,其中,所述失败指示用于指示网络连接错误。

示例18。根据示例15到示例17中的任何一个所述的介质,其中,检测网络改变包括:向所述操作系统注册以接收用于通知网络连接改变的触发;接收网络连接改变的通知。

示例19。根据示例15到示例18中的任何一个所述的介质,其中,管理所述上传队列包括:响应于检测到新内容,在所述上传队列中将所述新内容指示为新的;如果所述新内容成功地发送到所述云服务,则在所述上传队列中将所述新内容指示为已发送。

示例20。根据示例15到示例19中的任何一个所述的介质,其中,响应于检测到所述网络连接可用性,将所述上传队列设置为所述未暂停状态。

应当理解的是,本文所描述的示例和实施例仅用于说明目的,本领域普通技术人员可以建议对其进行各种修改或改变,并且将包括在本申请的精神和范围内。

虽然利用特定于结构特征和/或动作的语言来描述主题,但应当理解的是,所附的权利要求书中规定的主题并不必需限于上面所描述的特定特征或者动作。相反,只是将上面所描述的特定特征和动作公开成实现本发明的例子,其它等同的特征和动作也落在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1