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

文档序号:8457190阅读:来源:国知局

[0032]具体地,在不读取缓存中的数据,而是直接去服务端处下载数据,或者,读取缓存中的数据,根据需要去服务端处下载数据之后,应用程序组件可以正常运行,在应用程序组件执行到生命周期=OnPause阶段后,将持久化变量的变量值赋值为第二数值,以供下一次应用程序组件启动时依据持久化变量的变量值了解此次应用程序组件的运行情况。
[0033]根据本发明上述实施例提供的方法,通过在应用程序组件的生命周期中增设持久化变量和内存变量,利用持久化变量记录应用程序本次的运行情况,和利用内存变量获取应用程序上一次运行情况,根据内存变量的变量值推断是否可从缓存中读取数据,解决了缓存导致应用程序反复崩溃的问题,而且不造成开发人员较大负担,不依靠人力防止崩溃,解放了人力。
[0034]下面将以持久化变量和内存变量均为布尔变量,详细介绍应用程序的运行方法:
[0035]Boolean Variable (布尔变量)是有两种逻辑状态的变量,它包含两个值:True (真)和False (假),第一数值为False,第二数值为True。
[0036]图2示出了根据本发明另一个实施例的应用程序的运行方法的流程图。如图2所示,该方法包括以下步骤:
[0037]步骤S200,在应用程序组件被创建时,将持久化变量的变量值赋值给内存变量,而后将持久化变量的变量值赋值为False。
[0038]具体地,持久化变量的变量值可以是True或False。False表示应用程序组件未执行到生命周期onPause阶段,True表示应用程序组件未执行到生命周期:onPauSe阶段。
[0039]在应用程序组件生命周期:onCreate阶段,将持久化变量的变量值赋值给内存变量,而后将持久化变量的变量值赋值为False,可通过以下函数实现:
[0040]SharedPreferences sp = GameUn1nApp Ii cat 1n.getAppl icat1n ().getSharedPreferences(PAGE_LAST_STATE_SHAREP_NAME, Context.M0DE_PRIVATE);
[0041]mLastRunOnPause = sp.getBoolean(getClass().getName(), False);
[0042]Editor editor = sp.edit ();
[0043]editor.putBoolean (getClass ().getName (), False);
[0044]editor, commit ();
[0045]可选地,可在应用程序组件类、应用程序组件子类、和/或应用程序组件父类中增设持久化变量和内存变量。例如,在activity类和fragment类中增设,也可以在父类,如baseActivity、baseFragmentActivity、baseFragment 中增设。本领域技术人员可以根据实际需要在适当位置增设持久化变量和内存变量,在此不做具体限定。
[0046]步骤S210,在运行应用程序组件的过程中,在应用程序组件读取缓存之前,读取内存变量的变量值。
[0047]步骤S220,判断内存变量的变量值是否为False,若内存变量的变量值为False,则执行步骤S230 ;若内存变量的变量值为True,则执行步骤S240。
[0048]当应用程序组件在运行过程中出现崩溃的情况下,应用程序组件运行的数据也存储到缓存中,若应用程序组件每次运行都先读取缓存,则会导致应用程序组件再次崩溃,并陷入无限死循环中,用户将无法使用该应用程序,为了解决该问题,本步骤在应用程序组件读取缓存之前,首先读取内存变量的变量值,若内存变量的变量值为False,则上一次应用程序组件未执行到生命周期onPause阶段,则在此次运行过程中,将不读取缓存中的数据,而是直接去服务端处下载数据;若内存变量的变量值为True,则应用程序组件执行到生命周期=OnPause阶段,可以读取缓存中的数据,根据需要去服务端处下载数据。
[0049]步骤S230,不读取缓存中的数据,直接去服务端处下载数据。
[0050]在内存变量的变量值为False的情况下,将不读取缓存中的数据,而是直接去服务端处下载数据,从而保证应用程序正常运行。
[0051]步骤S240,读取缓存中的数据。
[0052]在内存变量的变量值为True的情况下,读取缓存中的数据。由于缓存中记录的可能仅仅是应用程序运行的部分数据,并不足以使应用程序正常运行,因此可能需要到服务端处下载数据。
[0053]步骤S250,判断缓存中的数据是否包含应用程序需要的数据,若不包含,则执行步骤S260 ;若包含,则执行步骤S270。
[0054]在缓存中的数据不包含应用程序需要的数据的情况下,需要去服务端处下载数据;在缓存中的数据包含应用程序需要的数据的情况下,则无需去服务端处下载数据,应用程序可以根据缓存中的数据正常运行。
[0055]步骤S260,去服务端处下载数据。
[0056]步骤S270,当应用程序组件被中断时,将持久化变量和内存变量的变量值赋值为True0
[0057]具体地,根据上述步骤的数据,应用程序组件可以正常运行,在应用程序组件执行到生命周期:onPause阶段后,将持久化变量的变量值赋值为True,可通过以下函数实现:
[0058]mLastRunOnPause = True ;
[0059]SharedPreferences sp = GameUn1nApp I icat1n.getAppl icat1n ().getSharedPreferences(PAGE_LAST_STATE_SHAREP_NAME, Context.M0DE_PRIVATE);
[0060]Editor editor = sp.edit ();
[0061]editor.putBoolean (getClass ().getName (), True);
[0062]editor, commit ();
[0063]根据本发明上述实施例提供的方法,通过在应用程序组件的生命周期中增设持久化变量和内存变量,利用持久化变量记录应用程序本次的运行情况,和利用内存变量获取应用程序上一次运行情况,根据内存变量的变量值推断是否可从缓存中读取数据,解决了缓存导致应用程序反复崩溃的问题,而且不造成开发人员较大负担,不依靠人力防止崩溃,解放了人力,在应用程序中断后将持久化变量和内存变量的变量值赋值为True,保证了方法的完整性。
[0064]图3示出了根据本发明一个实施例的应用程序的运行装置的结构框图。如图3所示,该装置包括:设置模块300、赋值模块310、获取模块320、读取模块330、下载模块340。
[0065]设置模块300,适于在应用程序组件的生命周期中增设持久化变量和内存变量。
[0066]可选地,设置模块300,具体适于在应用程序组件类、应用程序组件子类、和/或应用程序组件父类中增设持久化变量和内存变量。其中,持久化变量和内存变量均为布持久化变量和内存变量均为布尔变量,第一数值为False,第二数值为True。
[0067]赋值模块310,适于在应用程序组件被创建时,将持久化变量的变量值赋值给内存变量,而后将持久化变量的变量值赋值为第一数值。
[0068]获取模块320,适于在运行应用程序组件的过程中,在应用程序组件读取缓存之前,读取内存变量的变量值。
[0069]读取模块330,适于在所述内存变量的变量值为第二数值的情况下,读取缓存中的数据。
[0070]下载模块340,适于在内存变量的变量值为第一数值的情况下,不读取缓存中的数据,直接去服务端处下载数据;以及在所述内存变量的变量值为第二数值的情况下,在所述读取模块读取缓存中的数据之后,根据需要去服务端处下载数据。
[0071]赋值模块310进一步适于:当应用程序组件被中断时,将持久化变量的变量值赋值为第二数值。
[0072]赋值模块310进一步适于:当应用程序组件被中断时,将内存变量的变量值赋值为第二数值。
[0073]下载模块340进一步适于:在所述内存变量的变量值为第二数值的情况下,在所述读取模块读取缓存中的数据之后,若缓存中的数据不包含所述应用程序需要的数据,则去服务端处下载数据。
[0074]下面将以持久化变量和内存变量均为布尔变量,详细介绍应用程序的运行方法:
[0075]Boolean Variable (布尔变量)是有两种逻辑状态的变量,它包含两个值:True (真)和False (假),第一数值为False,第二数值为True。
[0076]设置模块300,适于在应用程序组件的生命周期中增设变量类型为布尔变量的持久化变量和内存变量。
[0077]赋值模块310,适于在应用程序组件被创建时,将持
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1