CN105045617A - 一种Android系统的应用恢复方法及系统 - Google Patents
一种Android系统的应用恢复方法及系统 Download PDFInfo
- Publication number
- CN105045617A CN105045617A CN201510382943.XA CN201510382943A CN105045617A CN 105045617 A CN105045617 A CN 105045617A CN 201510382943 A CN201510382943 A CN 201510382943A CN 105045617 A CN105045617 A CN 105045617A
- Authority
- CN
- China
- Prior art keywords
- application program
- application
- cloud server
- module
- android system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Stored Programmes (AREA)
- Retry When Errors Occur (AREA)
Abstract
本发明公开一种Android系统的应用恢复方法及系统,其中,方法包括步骤:A、当应用程序启动异常时,将错误信息以及设备信息上报至云端服务器,并对在系统中设置一用于表示所述应用程序出现启动异常的标记;B、当该应用程序下次启动时,在系统中读取是否存在该标记,若存在则删除从云端服务器下载的缓存文件,并使用应用程序正常启动时备份的缓存文件,以启动所述应用程序;C、判断应用程序是否启动成功,若未成功则进入步骤D;D、启动一下载更新模块,通过所述下载更新模块从云端服务器下载该应用程序的更新文件,以启动所述应用程序。本发明从应用出现异常的原因出发,通过Java的特性来解决,解决应用程序在与云端交互时不兼容的问题。
Description
技术领域
本发明涉及Android系统领域,尤其涉及一种Android系统的应用恢复方法及系统。
背景技术
应用程序,例如网格UI应用程序在初期发布时,一般都运行正常,因为其经过了严格的测试才发布到终端,但经过一段时间的运行,由于与云端进行了数据交互,最终应用程序可能由于不可预期的错误,导致无法正常启动。
因此,现有技术还有待于改进和发展。
发明内容
鉴于上述现有技术的不足,本发明的目的在于提供一种Android系统的应用恢复方法及系统,旨在解决现有技术中应用程序在启动时发生启动异常的问题。
本发明的技术方案如下:
一种Android系统的应用恢复方法,其中,包括步骤:
A、当应用程序启动异常时,将错误信息以及设备信息上报至云端服务器,并在系统中设置一用于表示所述应用程序出现启动异常的标记;
B、当该应用程序下次启动时,在系统中读取是否存在该标记,若存在则删除从云端服务器下载的缓存文件,并使用应用程序正常启动时备份的缓存文件,以启动所述应用程序;
C、判断应用程序是否启动成功,若未成功则进入步骤D;
D、启动一下载更新模块,通过所述下载更新模块从云端服务器下载该应用程序的更新文件,以启动所述应用程序。
所述的Android系统的应用恢复方法,其中,所述步骤D包括:
D1、启动一下载更新模块,并暂停启动所述应用程序;
D2、通过所述下载更新模块从云端服务器下载该应用程序的更新文件;
D3、根据所述更新文件启动所述应用程序。
所述的Android系统的应用恢复方法,其中,所述步骤D3之后还包括:
D4、当成功启动所述应用程序时,则删除所述标记。
所述的Android系统的应用恢复方法,其中,所述设备信息包括设备号、设备ID、系统版本号、软件版本号及软件版本名称。
所述的Android系统的应用恢复方法,其中,所述上报至云端服务器的错误信息中设置有一用于标识应用程序的标示。
所述的Android系统的应用恢复方法,其中,所述应用程序为网格UI应用程序。
一种Android系统的应用恢复系统,其中,包括步骤:
上报模块,用于当应用程序启动异常时,将错误信息以及设备信息上报至云端服务器,并在系统中设置一用于表示所述应用程序出现启动异常的标记;
第一层处理模块,用于当该应用程序下次启动时,在系统中读取是否存在该标记,若存在则删除从云端服务器下载的缓存文件,并使用应用程序正常启动时备份的缓存文件,以启动所述应用程序;
判断模块,用于判断应用程序是否启动成功,若未成功则进入第二层处理模块;
第二层处理模块,用于启动一下载更新模块,通过所述下载更新模块从云端服务器下载该应用程序的更新文件,以启动所述应用程序。
所述的Android系统的应用恢复系统,其中,所述第二层处理模块包括:
启动单元,用于当存在该标记时,则启动一下载更新模块,并暂停启动所述应用程序;
下载单元,用于通过所述下载更新模块从云端服务器下载该应用程序的更新文件;
启动单元,用于根据所述更新文件启动所述应用程序。
所述的Android系统的应用恢复系统,其中,所述第二层处理模块还包括:
删除单元,用于当成功启动所述应用程序时,则删除所述标记。
所述的Android系统的应用恢复系统,其中,所述设备信息包括设备号、设备ID、系统版本号、软件版本号及软件版本名称。
有益效果:本发明从应用出现异常的原因出发,通过Java的特性来解决,具体是在应用程序出现异常时,对其进行标记,然后重启应用,并且将从云端服务器下的缓存文件删除,从而使用之前备份的缓存文件,解决应用程序在与云端交互时不兼容的问题。
附图说明
图1为本发明一种Android系统的应用恢复方法较佳实施例的流程图。
图2为本发明一种Android系统的应用恢复系统较佳实施例的结构框图。
具体实施方式
本发明提供一种Android系统的应用恢复方法及系统,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参阅图1,图1为本发明一种Android系统的应用恢复方法较佳实施例的流程图,如图所示,其包括步骤:
S101、当应用程序启动异常时,将错误信息以及设备信息上报至云端服务器,并在系统中设置一用于表示所述应用程序出现启动异常的标记;
S102、当该应用程序下次启动时,在系统中读取是否存在该标记,若存在则删除从云端服务器下载的缓存文件,并应用程序正常启动时备份的缓存文件,以启动所述应用程序;
S103、判断应用程序是否启动成功,若未成功则进入步骤S104,若成功则进入步骤S105;
S104、启动一下载更新模块,通过所述下载更新模块从云端服务器下载该应用程序的更新文件,以启动所述应用程序;
S105、结束。
当应用程序,特别是网格UI应用程序刚发布时,一般不会出现异常,这是因为其经过了较严格的测试才发布到终端。但经过一段时间的运行,就可能出现异常,例如协议字段不匹配等不可预期的错误出现时,网格UI进程可能会停止运行;同时,由于错误数据已经缓存到本地,下次重启依然会加载此错误数据,导致网格UI停止运行的错误无法恢复。
应用程序在初始运行时未出现异常,但是当与云端交互时,则可能出现不兼容问题导致应用程序无法运行。为了解决上述数据不兼容的问题,在本发明中基于Java的异常处理机制来解决:
Java中有一个接口:UncaughtExceptionHandler,其描述如表1:
表1
static interface | Thread.UncaughtExceptionHandler 当 Thread 因未捕获的异常而突然终止时,调用处理程序的接口。 |
其中,Thread类中的一个方法如表2所示:
表2
static void | setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh) 设置线程由于未捕获到异常而突然终止,并且没有为该线程定义其他处理程序时所调用的默认处理程序。 |
通过上述分析,就可以实现这样一个接口,在应用程序的主线程中设置处理程序,即当应用程序的主线程出现异常的时候,对其进行容错处理。
当应用程序启动出现异常时(此处以网格UI应用程序为例),判断是否已将错误信息上报给云端服务器,如果未将错误信息上报,则将错误信息上报给云端服务器。如果已将错误信息上报给云端,为了信息的准确性,同时将以下设备信息同步上传给云端服务器,如:设备号(Dnum)、设备ID(DeviceId)、系统版本号(ClientTypeSystemVersion)、软件版本号(SWVersion)及软件版本名称(SWVersionName,包括代码的SVN号)。
同时在系统中设置一用于表示所述应用程序出现启动异常的标记,表示该应用程序出现了异常,需要容错处理,标记成功后,则结束运行,然后重新启动。
在该应用程序再次启动时,读取系统中是否存在所述标记,如果存在,则在启动时,将从云端服务器下载的缓存文件删除,从而使用应用程序正常启动时备份的缓存文件(例如应用程序最近一次正常启动备份的缓存文件),因为不能启动的原因是由于客户端与客户端从服务端下载的协议及其它文件不兼容导致的,所以改为使用之前正常启动的备份的缓存文件即可解决上述问题。
但上述方案仅仅能够作为应用程序异常启动的第一层保护机制,其原因有三:首先,上述方案仅对未做异常处理的应用程序起作用,如果某个应用程序已经事先准备好异常处理,则在该应用程序启动异常时首先需要添加异常处理逻辑,若未执行异常处理,则可能不会进入到主线程的全局处理,即无法执行上述的容错处理。其次,有些应用程序在开发时未按规则正常编写代码,这样在进行第一层保护时,无法捕获全局异常,导致服务端的协议出问题时反复重启应用程序。再者,某些应用程序无法启动的原因不是客户端与客户端下载的资源文件不兼容导致的,所以即使使用应用程序正常启动时备份的资源文件也并不能解决该问题。
本发明中,还采用了第二层保护机制,其主要是修改应用程序的启动机制,使其能够修复问题,并且可以不对Android的其他模块造成影响,以及不对其他应用的启动造成影响。
具体如下,所述步骤S104包括:
S201、启动一下载更新模块,并暂停启动所述应用程序;
S202、通过所述下载更新模块从云端服务器下载该应用程序的更新文件;
S203、根据所述更新文件启动所述应用程序。
以Android系统的ActivityManagerService模块(该模块其具体功能是:在应用程序中通过startActivity函数启动一个APP、在主界面中点击一个应用的图标启动一个APP、按返回键结束当前的APP,返回到上一个APP、长按主菜单键显示当前正在运行的程序列表,从中选择一个APP运行等等)为例,ActivityManagerService模块启动某个应用程序后,若该应用程序正常启动,则不进行任何操作,若该应用程序无法正常启动,则将错误信息上报至云端服务器,这与之前的错误信息上报相同。ActivityManagerService模块上报错误信息的操作可以是异步的,避免对该过程造成阻塞。另外上传的错误信息中标示出该应用程序,例如以该应用程序的包名作为唯一标示。
除上传错误信息之外,还对该应用程序进行标记,即在系统中对该应用程序进行标记,这与第一层保护的标记可以是相同的,也可以是不同的。
ActivityManagerService模块每次启动时,判断是否存在该标记,若存在的话,再判断是否云端服务器是否存在该应用程序的更新处理方式(设置有更新文件),若存在,则启动下载更新模块,并暂停启动所述应用程序;通过所述下载更新模块从云端服务器下载该应用程序的更新文件,若下载成功并且成功启动了相应的应用程序,则删除所述标记。若云端服务器不存在该应用程序的处理方式,则ActivityManagerService模块继续产生启动应用程序信号,继续上面的流程。
需说明的是,本发明中均以Android系统为了进行说明,但本发明同样适用于其他系统,只是修改的模块有所不同。
基于上述方法,本发明还提供一种Android系统的应用恢复系统较佳实施例,如图2所示,其包括步骤:
上报模块100,用于当应用程序启动异常时,将错误信息以及设备信息上报至云端服务器,并在系统中设置一用于表示所述应用程序出现启动异常的标记;
恢复模块200,用于当该应用程序下次启动时,在系统中读取是否存在该标记,若存在则删除从云端服务器下载的缓存文件,并使用,以启动所述应用程序备份的缓存文件,以启动所述应用程序,以启动所述应用程序;
判断模块300,用于判断应用程序是否启动成功,若未成功则进入第二层处理模块;
第二层处理模块400,用于启动一下载更新模块,通过所述下载更新模块从云端服务器下载该应用程序的更新文件,以启动所述应用程序。
进一步,所述第二层处理模块400包括:
启动单元,用于当存在该标记时,则启动一下载更新模块,并暂停启动所述应用程序;
下载单元,用于通过所述下载更新模块从云端服务器下载该应用程序的更新文件;
启动单元,用于根据所述更新文件启动所述应用程序。
进一步,所述第二层处理模块400还包括:
删除单元,用于当成功启动所述应用程序时,则删除所述标记。
进一步,所述设备信息包括设备号、设备ID、系统版本号、软件版本号及软件版本名称。
进一步,所述上报至云端服务器的错误信息中设置有一用于标识应用程序的标示。
关于上述模块单元的技术细节在前面的方法中已有详述,故不再赘述。
综上所述,本发明从应用出现异常的原因出发,通过Java的特性来解决,具体是在应用程序出现异常时,对其进行标记,然后重启应用,并且将从云端服务器下的缓存文件删除,从而使用之前备份的缓存文件,解决应用程序在与云端交互时不兼容的问题。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (10)
1.一种Android系统的应用恢复方法,其特征在于,包括步骤:
A、当应用程序启动异常时,将错误信息以及设备信息上报至云端服务器,并在系统中设置一用于表示所述应用程序出现启动异常的标记;
B、当该应用程序下次启动时,在系统中读取是否存在该标记,若存在则删除从云端服务器下载的缓存文件,并使用应用程序正常启动时备份的缓存文件,以启动所述应用程序;
C、判断应用程序是否启动成功,若未成功则进入步骤D;
D、启动一下载更新模块,通过所述下载更新模块从云端服务器下载该应用程序的更新文件,以启动所述应用程序。
2.根据权利要求1所述的Android系统的应用恢复方法,其特征在于,所述步骤D包括:
D1、启动一下载更新模块,并暂停启动所述应用程序;
D2、通过所述下载更新模块从云端服务器下载该应用程序的更新文件;
D3、根据所述更新文件启动所述应用程序。
3.根据权利要求2所述的Android系统的应用恢复方法,其特征在于,所述步骤D3之后还包括:
D4、当成功启动所述应用程序时,则删除所述标记。
4.根据权利要求1所述的Android系统的应用恢复方法,其特征在于,所述设备信息包括设备号、设备ID、系统版本号、软件版本号及软件版本名称。
5.根据权利要求1所述的Android系统的应用恢复方法,其特征在于,所述上报至云端服务器的错误信息中设置有一用于标识应用程序的标示。
6.根据权利要求1所述的Android系统的应用恢复方法,其特征在于,所述应用程序为网格UI应用程序。
7.一种Android系统的应用恢复系统,其特征在于,包括步骤:
上报模块,用于当应用程序启动异常时,将错误信息以及设备信息上报至云端服务器,并在系统中设置一用于表示所述应用程序出现启动异常的标记;
第一层处理模块,用于当该应用程序下次启动时,在系统中读取是否存在该标记,若存在则删除从云端服务器下载的缓存文件,并使用应用程序正常启动时备份的缓存文件,以启动所述应用程序;
判断模块,用于判断应用程序是否启动成功,若未成功则进入第二层处理模块;
第二层处理模块,用于启动一下载更新模块,通过所述下载更新模块从云端服务器下载该应用程序的更新文件,以启动所述应用程序。
8.根据权利要求7所述的Android系统的应用恢复系统,其特征在于,所述第二层处理模块包括:
启动单元,用于当存在该标记时,则启动一下载更新模块,并暂停启动所述应用程序;
下载单元,用于通过所述下载更新模块从云端服务器下载该应用程序的更新文件;
启动单元,用于根据所述更新文件启动所述应用程序。
9.根据权利要求8所述的Android系统的应用恢复系统,其特征在于,所述第二层处理模块还包括:
删除单元,用于当成功启动所述应用程序时,则删除所述标记。
10.根据权利要求7所述的Android系统的应用恢复系统,其特征在于,所述设备信息包括设备号、设备ID、系统版本号、软件版本号及软件版本名称。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510382943.XA CN105045617B (zh) | 2015-07-03 | 2015-07-03 | 一种Android系统的应用恢复方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510382943.XA CN105045617B (zh) | 2015-07-03 | 2015-07-03 | 一种Android系统的应用恢复方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105045617A true CN105045617A (zh) | 2015-11-11 |
CN105045617B CN105045617B (zh) | 2019-11-12 |
Family
ID=54452181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510382943.XA Active CN105045617B (zh) | 2015-07-03 | 2015-07-03 | 一种Android系统的应用恢复方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105045617B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105653399A (zh) * | 2015-12-23 | 2016-06-08 | 北京奇虎科技有限公司 | 应用备份还原方法、装置及系统 |
CN107168699A (zh) * | 2017-04-28 | 2017-09-15 | 北京五八信息技术有限公司 | 应用程序修复方法及终端设备 |
CN107341026A (zh) * | 2016-05-03 | 2017-11-10 | 阿里巴巴集团控股有限公司 | 驱动程序的控制方法及装置 |
CN108090362A (zh) * | 2017-02-08 | 2018-05-29 | 哈尔滨安天科技股份有限公司 | 一种atm程序更新的安全防护方法及系统 |
CN109408282A (zh) * | 2018-08-31 | 2019-03-01 | 深圳市有方科技股份有限公司 | 应用程序备份恢复方法、设备及计算机可读存储介质 |
CN110175101A (zh) * | 2019-04-30 | 2019-08-27 | 北京百度网讯科技有限公司 | 一种异常捕获方法、装置以及终端 |
CN110413341A (zh) * | 2019-07-02 | 2019-11-05 | 上海上湖信息技术有限公司 | 一种应用程序的启动方法、装置、终端及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102855181A (zh) * | 2011-07-01 | 2013-01-02 | 腾讯科技(深圳)有限公司 | 软件修复方法及系统 |
CN103530199A (zh) * | 2012-07-02 | 2014-01-22 | 腾讯科技(深圳)有限公司 | 一种修复软件运行错误的方法、装置及系统 |
CN103856368A (zh) * | 2011-06-27 | 2014-06-11 | 北京奇虎科技有限公司 | 一种监控程序的方法及系统 |
CN104253791A (zh) * | 2013-06-27 | 2014-12-31 | 华为终端有限公司 | 一种网页应用程序的安全访问方法、服务器和客户端 |
CN104461786A (zh) * | 2014-12-19 | 2015-03-25 | 上海斐讯数据通信技术有限公司 | Android系统的恢复方法及Android系统的恢复系统 |
-
2015
- 2015-07-03 CN CN201510382943.XA patent/CN105045617B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103856368A (zh) * | 2011-06-27 | 2014-06-11 | 北京奇虎科技有限公司 | 一种监控程序的方法及系统 |
CN102855181A (zh) * | 2011-07-01 | 2013-01-02 | 腾讯科技(深圳)有限公司 | 软件修复方法及系统 |
CN103530199A (zh) * | 2012-07-02 | 2014-01-22 | 腾讯科技(深圳)有限公司 | 一种修复软件运行错误的方法、装置及系统 |
CN104253791A (zh) * | 2013-06-27 | 2014-12-31 | 华为终端有限公司 | 一种网页应用程序的安全访问方法、服务器和客户端 |
CN104461786A (zh) * | 2014-12-19 | 2015-03-25 | 上海斐讯数据通信技术有限公司 | Android系统的恢复方法及Android系统的恢复系统 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105653399A (zh) * | 2015-12-23 | 2016-06-08 | 北京奇虎科技有限公司 | 应用备份还原方法、装置及系统 |
CN105653399B (zh) * | 2015-12-23 | 2019-07-23 | 北京奇虎科技有限公司 | 应用备份还原方法、装置及系统 |
CN107341026A (zh) * | 2016-05-03 | 2017-11-10 | 阿里巴巴集团控股有限公司 | 驱动程序的控制方法及装置 |
CN107341026B (zh) * | 2016-05-03 | 2020-08-04 | 阿里巴巴集团控股有限公司 | 驱动程序的控制方法及装置 |
CN108090362A (zh) * | 2017-02-08 | 2018-05-29 | 哈尔滨安天科技股份有限公司 | 一种atm程序更新的安全防护方法及系统 |
CN107168699A (zh) * | 2017-04-28 | 2017-09-15 | 北京五八信息技术有限公司 | 应用程序修复方法及终端设备 |
CN109408282A (zh) * | 2018-08-31 | 2019-03-01 | 深圳市有方科技股份有限公司 | 应用程序备份恢复方法、设备及计算机可读存储介质 |
CN110175101A (zh) * | 2019-04-30 | 2019-08-27 | 北京百度网讯科技有限公司 | 一种异常捕获方法、装置以及终端 |
CN110175101B (zh) * | 2019-04-30 | 2023-05-26 | 北京百度网讯科技有限公司 | 一种异常捕获方法、装置以及终端 |
CN110413341A (zh) * | 2019-07-02 | 2019-11-05 | 上海上湖信息技术有限公司 | 一种应用程序的启动方法、装置、终端及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105045617B (zh) | 2019-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105045617A (zh) | 一种Android系统的应用恢复方法及系统 | |
CN102736978B (zh) | 一种检测应用程序的安装状态的方法及装置 | |
CN110321254B (zh) | 软件版本回滚方法、装置、服务器及存储介质 | |
CN108196878B (zh) | 应用程序安装包的生成方法、装置、电子设备及存储介质 | |
US8522207B1 (en) | Systems and methods for automated centralized build/merge management | |
CN110225078B (zh) | 一种应用服务更新方法、系统及终端设备 | |
CN103518191A (zh) | 一种升级方法、智能终端及升级系统 | |
WO2019019668A1 (zh) | 应用程序启动方法、装置、计算机设备和存储介质 | |
US10346262B2 (en) | Job management apparatus, job management method and computer readable medium to generate and execute a retry job when an error occurs during a job step | |
CN102346673A (zh) | 一种手机系统升级的方法及装置 | |
CN113515297B (zh) | 一种版本更新方法、装置、电子设备及存储介质 | |
CN112486629A (zh) | 微服务状态检测方法、装置、电子设备和存储介质 | |
US20210048999A1 (en) | Automated generation of status chains for software updates | |
US11983519B2 (en) | Abort installation of firmware bundles | |
CN102193841B (zh) | 一种Subversion配置库的备份方法及装置 | |
US10248402B2 (en) | Automated code deployment system | |
CN103984585A (zh) | 一种Linux内核可热插拨内核模块运行时升级方法 | |
CN103019706A (zh) | 针对启动项目的处理方法和装置 | |
CN108132832B (zh) | 应用程序启动方法和装置 | |
CN104915593A (zh) | 对软件的去捆绑处理方法及系统 | |
CN113806138A (zh) | 数据库的备份恢复检测方法、装置及电子设备、存储介质 | |
CN111385613B (zh) | 一种电视系统修复方法、存储介质及应用服务器 | |
CN113050926B (zh) | 一种代码同步变更的确认方法、装置和设备 | |
CN115543429A (zh) | 项目环境的搭建方法、电子设备及计算机可读存储介质 | |
CN114996955A (zh) | 一种云原生混沌工程实验的靶场环境构建方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |