应用程序的运行方法及装置的制造方法

文档序号:8457190阅读:348来源:国知局
应用程序的运行方法及装置的制造方法
【技术领域】
[0001]本发明涉及互联网技术领域,具体涉及一种应用程序的运行方法及装置。
【背景技术】
[0002]在应用程序(app)运行过程中,很多时候,会先读缓存(cache),再从服务端处下载数据,以提升用户体验,这几乎是所有应用程序的通用做法,比如微信、微博、360手机助手、陌陌等应用程序。但是,这其中包含了一个严重隐患,在一次cache读取错误而导致应用程序崩溃的情况下,下一次在进行“先读cache,再从服务端处下载数据”的时候,读cache这个阶段,又导致了该应用程序崩溃,从而进入了死循环,使得用户无法使用该应用程序。
[0003]现有技术所采用的一种解决方案是使用try/catch等机制,和严格的代码编写、review、测试等机制来保证应用程序不会因为cache而导致崩溃。然而,try/catch等机制由于java本身机制的限制,try/catch只能捕获可捕获异常(如NullPointExcept1n)而不能捕获error (如oom)。所以,如果cache引起应用程序错误而导致崩溃的话,try/catch机制并不能起作用。而且,涉及到使用cache的代码几乎会散落在各个类,处处使用try/catch显然会造成很大的负担,而且容易遗漏。其次,依靠严格的代码编写、review、测试等机制,是依靠人力来防止页面出问题。由于客户端运行的环境千变万化,仅仅android手机的类型就有无数种。而即使忽略app的运行环境差异,运营app的过程中,也可能对app产生不可预计的后果。比如,在已上线的应用中,运营给app的某一个页面配置了一个超大的gif。从而导致在一些手机上,这个配了超大gif的页面会崩溃。而这种情况,很可能在测试阶段没有被发现。
[0004]现有技术所采用的另一种解决方案是通过崩溃日志(crashlog),在页面加载的时候,反推出该页面在上一次使用过程中,是否崩溃过。由于很多的crashlog,信息并不全,有些信息不能精确定位到一个界面。这些信息是无法通过这种crashlog分析出当时在哪个页面产生崩溃。所以这种解决方案,只能处理一小部分能从crash log反推出崩溃界面的情况。

【发明内容】

[0005]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的应用程序的运行方法和相应的应用程序的运行装置。
[0006]根据本发明的一个方面,提供了一种应用程序的运行方法,在应用程序组件的生命周期中增设持久化变量和内存变量,方法包括:
[0007]在应用程序组件被创建时,将持久化变量的变量值赋值给内存变量,而后将持久化变量的变量值赋值为第一数值;
[0008]在运行应用程序组件的过程中,在应用程序组件读取缓存之前,读取内存变量的变量值;若内存变量的变量值为第一数值,不读取缓存中的数据,直接去服务端处下载数据;若内存变量的变量值为第二数值,读取缓存中的数据,根据需要去服务端处下载数据;
[0009]当应用程序组件被中断时,将持久化变量的变量值赋值为第二数值。
[0010]根据本发明的另一方面,提供了一种应用程序的运行装置,包括:
[0011]设置模块,适于在应用程序组件的生命周期中增设持久化变量和内存变量;
[0012]赋值模块,适于在应用程序组件被创建时,将持久化变量的变量值赋值给内存变量,而后将持久化变量的变量值赋值为第一数值;
[0013]获取模块,适于在运行应用程序组件的过程中,在应用程序组件读取缓存之前,读取内存变量的变量值;
[0014]读取模块,适于在所述内存变量的变量值为第二数值的情况下,读取缓存中的数据;
[0015]下载模块,适于在内存变量的变量值为第一数值的情况下,不读取缓存中的数据,直接去服务端处下载数据;以及,在所述内存变量的变量值为第二数值的情况下,在所述读取模块读取缓存中的数据之后,根据需要去服务端处下载数据;
[0016]赋值模块进一步适于:当应用程序组件被中断时,将持久化变量的变量值赋值为第二数值。
[0017]根据本发明提供的方案,通过在应用程序组件的生命周期中增设持久化变量和内存变量,利用持久化变量记录应用程序本次的运行情况,并且利用内存变量获取应用程序上一次运行情况,根据内存变量的变量值推断是否可从缓存中读取数据,解决了缓存导致应用程序反复崩溃的问题,而且不造成开发人员较大负担,不依靠人力防止崩溃,解放了人力。
[0018]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【附图说明】
[0019]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0020]图1示出了根据本发明一个实施例的应用程序的运行方法的流程图;
[0021]图2示出了根据本发明另一个实施例的应用程序的运行方法的流程图;
[0022]图3示出了根据本发明一个实施例的应用程序的运行装置的结构框图。
【具体实施方式】
[0023]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0024]在应用程序组件的生命周期中增设持久化变量和内存变量。应用程序组件的生命周期包括从应用程序组件启动到应用程序组件关闭的整个过程,具体包括Activitylaunched (应用程序组件启动)、onCreate (创建)、onStart (过程开始)、onResume、Activity running (应用程序组件执行)、onPause (过程中断)、onStop (过程停止)、onDestroy (过程清理)、Activity shut down(应用程序组件关闭)。本申请中的生命周期:onPause阶段用于表示由一个Activity (应用程序)转到另一个Activity、设备进入休眠状态(屏幕锁住了)、或者有dialog弹出。持久化变量是能够长久保存的变量,只有在修改或删除的情况下,才会改变变量的变量值,应用程序组件关闭后再启动,持久化变量的变量值并不会发生改变。
[0025]图1示出了根据本发明一个实施例的应用程序的运行方法的流程图。如图1所示,该方法包括以下步骤:
[0026]步骤S100,在应用程序组件被创建时,将持久化变量的变量值赋值给内存变量,而后将持久化变量的变量值赋值为第一数值。
[0027]具体地,在应用程序组件生命周期:onCreate阶段,将持久化变量的变量值赋值给内存变量,该持久化变量的变量值能够体现上一次应用程序组件是否执行到生命周期:onPause阶段,持久化变量的变量值分为第一数值和第二数值,在将持久化变量的变量值赋值给内存变量后,将持久化变量的变量值赋值为第一数值,其中,第一数值表示应用程序组件未执行到生命周期=OnPause阶段,第二数值表示应用程序组件执行到生命周期:onPause阶段。本步骤中的持久化变量和内存变量的变量值可以用二进制数标识,或者用布尔变量标识,本领域技术人员应该理解,第一数值的标识方法并不限于上述两种,其可以根据实际应用的需要进行拓展。
[0028]步骤S110,在运行应用程序组件的过程中,在应用程序组件读取缓存之前,读取内存变量的变量值;若内存变量的变量值为第一数值,不读取缓存中的数据,直接去服务端处下载数据;若内存变量的变量值为第二数值,读取缓存中的数据,根据需要去服务端处下载数据。
[0029]具体地,缓存是数据交换的缓冲区,缓存中存储有应用程序组件上一次运行的数据,应用程序组件运行过程中,首先从缓存中查找所需的数据,若缓存中没有存储应用程序组件运行所需要的数据,可以根据需要去服务端处下载数据。
[0030]但是,当应用程序组件在运行过程中出现崩溃的情况下,应用程序组件运行的数据也存储到缓存中,若应用程序组件每次运行都先读取缓存,则会导致应用程序组件再次崩溃,并陷入无限死循环中,用户将无法使用该应用程序,为了解决该问题,本步骤在应用程序组件读取缓存之前,首先读取内存变量的变量值,若内存变量的变量值为第一数值,则上一次应用程序组件未执行到生命周期=OnPause阶段,将不读取缓存中的数据,而是直接去服务端处下载数据;若内存变量的变量值为第二数值,则上一次应用程序组件执行到生命周期:onPauSe阶段,可以读取缓存中的数据,根据需要去服务端处下载数据。
[0031]步骤S120,当应用程序组件被中断时,将持久化变量的变量值赋值为第二数值。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1