一种基于对象快照的应用透明的自由缩放容错方法技术

技术编号:36167516 阅读:10 留言:0更新日期:2022-12-31 20:17
本发明专利技术公开了一种基于对象快照的应用透明的自由缩放容错方法,通过在安卓兼容环境内为大小改变的Activity创建活动快照,在重启Activity操作之前对ActivityStack进行保护,并捕获重启Activity操作中的异常根据异常特征确定异常的响应方式,能够在不修改安卓应用代码的前提下处理由安卓应用大小改变所导致的异常,实现对Activity崩溃的系统级容错处理。理。

【技术实现步骤摘要】
一种基于对象快照的应用透明的自由缩放容错方法


[0001]本专利技术属于移动应用开发
,具体涉及一种基于对象快照的应用透明的自由缩放容错方法。

技术介绍

[0002]当在桌面平台上运行安卓应用时,根据用户使用桌面系统的习惯往往会产生缩放安卓应用窗口的需求。现有技术中通常采用在桌面平台上安装安卓运行环境的方式运行安卓应用,典型的安卓兼容环境主要包括安卓应用显示单元和安卓应用兼容服务,安卓应用显示单元用于在桌面操作系统上实现安卓应用的用户界面,安卓应用兼容服务用于提供运行于桌面操作系统上的安卓兼容环境,通过安卓应用显示单元与安卓应用兼容服务的相互配合实现安卓应用在桌面操作系统上的有效运行,例如,现有安卓兼容环境的实现方案有xDroid,它包括xDroidUI和xDroidServer,xDroidUI为安卓应用显示单元,xDroidServer为安卓应用兼容服务。
[0003]在现有的安卓系统中,当安卓应用窗口发生变化时,例如,安卓应用窗口的大小、显示文字的字体或键盘等改变,安卓系统框架层的ActivityManager会触发AcitivtyConfigurationChanged消息,并尝试重新启动应用相关的所有活动Activity。一般情况下,安卓应用窗口是由安卓系统实现并控制的,安卓应用的Activity则是由安卓应用本身实现的。如果在安卓应用开发过程中未考虑重启Activity时的适应性调整操作,就可能产生调整安卓应用窗口大小导致Activity崩溃的问题,并且安卓应用的使用模式决定了大多数的应用开发者并未考虑此类问题,因此为安卓应用在桌面系统的使用带来了困难。

技术实现思路

[0004]有鉴于此,本专利技术提供了一种基于对象快照的应用透明的自由缩放容错方法,能够保证在安卓应用窗口自由缩放时安卓应用功能的稳定性及可靠性。
[0005]本专利技术提供的一种基于对象快照的应用透明的自由缩放容错方法,具体包括以下步骤:步骤1、当桌面系统内产生安卓应用桌面窗口相关的缩放事件时,安卓应用显示单元向安卓兼容环境发送包含改变后的安卓应用窗口大小的安卓应用窗口缩放事件消息;步骤2、安卓兼容环境接收到安卓应用显示单元发送的安卓应用窗口缩放事件消息后,根据安卓应用窗口缩放事件消息重新设置安卓应用的窗口大小后,为安卓应用的所有Activity创建活动快照,活动快照中保存Activity的所有属性;获取每个Activity所在的ActivityStack,若ActivityStack所保存的Activity数量大于1,则将当前安卓应用相关的Activity从ActivityStack中移出,并记录Activity在ActivityStack中的位置为Activity索引位置;步骤3、安卓兼容环境执行重启所有Activity的操作,如果执行过程产生异常,则
在捕获异常后分析异常调用栈,若异常调用栈中存在与Activity重启相关的函数则执行步骤4,否则执行步骤5;如果执行过程未产生异常,则执行步骤6;步骤4、采用步骤2中创建的活动快照保存的属性重新设置对应的Activity,再采用步骤2中重新设置的安卓应用的窗口大小对安卓应用窗口执行重布局操作,并不再向上抛出异常完成安卓系统后续操作的执行;若Activity索引位置为空则执行步骤7,否则将Activity按照Activity索引位置插入ActivityStack后执行步骤7;步骤5、采用步骤2中创建的活动快照保存的属性重新设置对应的Activity,再采用当前Activity操作相关的线程执行安卓应用对应窗口的所有Activity的重新启动操作,并不再向上抛出异常完成安卓系统后续操作的执行;若Activity索引位置为空则执行步骤7,否则将Activity按照Activity索引位置插入ActivityStack后执行步骤7;步骤6、若Activity索引位置为空则执行步骤7,否则将Activity按照Activity索引位置插入ActivityStack后执行步骤7;步骤7、安卓兼容环境向安卓应用显示单元发送Activity重新启动完毕消息;安卓应用显示单元接收到Activity重新启动完毕消息后,执行后续正常操作。
[0006]进一步地,所述步骤1中所述当桌面系统内产生安卓应用桌面窗口相关的缩放事件时,安卓应用显示单元采用保存的当前安卓应用桌面窗口的大小、截图及位置创建遮挡子窗口,并当安卓应用桌面窗口缩放时,对遮挡子窗口进行等比例缩放。
[0007]进一步地,所述遮挡子窗口为Image类型的Qt子窗口。
[0008]进一步地,所述创建遮挡子窗口后隐藏安卓应用桌面窗口内子窗口的显示。
[0009]进一步地,所述步骤7中所述安卓应用显示单元接收到Activity重新启动完毕消息后销毁所述遮挡子窗口。
[0010]进一步地,所述步骤2中所述活动快照中保存Activity的所有属性的方式为:在获取安卓应用Activity的属性后,判断属性的数据类型,若数据类型为POD则直接将Activity的属性值赋值给活动快照;若数据类型为非POD,则判断数据类型是否为Java对象,如果是则将Java对象的引用赋值给活动快照,如果不是则将属性值赋值给活动快照。
[0011]进一步地,所述将属性值赋值给活动快照的方式为通过调用赋值函数将属性值赋值给活动快照。
[0012]有益效果:本专利技术通过在安卓兼容环境内为改变大小的Activity创建活动快照,在安卓兼容环境重启Activity的操作之前对ActivityStack进行保护,以及在重启Activity的操作中捕获异常并根据异常特征确定异常的响应方式,能够在不修改安卓应用代码的前提下处理由安卓应用改变大小所导致的异常,实现对Activity崩溃的系统级容错。
具体实施方式
[0013]下面列举实施例,对本专利技术进行详细描述。
[0014]本专利技术提供的一种基于对象快照的应用透明的自由缩放容错方法,具体包括以下步骤:步骤1、当桌面系统内产生安卓应用桌面窗口相关的缩放事件时,安卓应用显示单元向安卓兼容环境发送包含改变后的安卓应用窗口大小的安卓应用窗口缩放事件消息。
[0015]其中,安卓应用桌面窗口为安卓应用在桌面系统中由安卓应用显示单元生成的应用窗口。本专利技术中安卓应用显示单元可通过RPC机制向安卓兼容环境发送安卓应用窗口缩放事件消息。
[0016]安卓应用桌面窗口缩放过程可能会导致安卓系统产生异常,若不处理异常则安卓应用将会退出,若处理异常则可能导致安卓应用桌面窗口出现黑屏闪烁现象,因此,为了进一步改善用户体验,本专利技术在处理异常的同时通过创建与安卓应用桌面窗口相同的临时窗口,采用临时窗口在安卓应用桌面窗口缩放过程中对其进行遮挡,以对用户屏蔽可能产生的黑屏闪烁情况。
[0017]具体来说,在产生安卓应用桌面窗口相关的缩放事件时,安卓应用显示单元保存当前安卓应用桌面窗口(也就是缩放前的安卓应用桌面窗口)的大小、截图及位置,采用保存的大小、截图及位置创建遮挡子窗口本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于对象快照的应用透明的自由缩放容错方法,其特征在于,具体包括以下步骤:步骤1、当桌面系统内产生安卓应用桌面窗口相关的缩放事件时,安卓应用显示单元向安卓兼容环境发送包含改变后的安卓应用窗口大小的安卓应用窗口缩放事件消息;步骤2、安卓兼容环境接收到安卓应用显示单元发送的安卓应用窗口缩放事件消息后,根据安卓应用窗口缩放事件消息重新设置安卓应用的窗口大小后,为安卓应用的所有Activity创建活动快照,活动快照中保存Activity的所有属性;获取每个Activity所在的ActivityStack,若ActivityStack所保存的Activity数量大于1,则将当前安卓应用相关的Activity从ActivityStack中移出,并记录Activity在ActivityStack中的位置为Activity索引位置;步骤3、安卓兼容环境执行重启所有Activity的操作,如果执行过程产生异常,则在捕获异常后分析异常调用栈,若异常调用栈中存在与Activity重启相关的函数则执行步骤4,否则执行步骤5;如果执行过程未产生异常,则执行步骤6;步骤4、采用步骤2中创建的活动快照保存的属性重新设置对应的Activity,再采用步骤2中重新设置的安卓应用的窗口大小对安卓应用窗口执行重布局操作,并不再向上抛出异常完成安卓系统后续操作的执行;若Activity索引位置为空则执行步骤7,否则将Activity按照Activity索引位置插入ActivityStack后执行步骤7;步骤5、采用步骤2中创建的活动快照保存的属性重新设置对应的Activity,再采用当前Activity操作相关的线程执行安卓应用对应窗口的所有Activity的重新启动操作,并不再向上抛出异常完成安卓系统后续操作的执行;若Activity索引位置为空则执行...

【专利技术属性】
技术研发人员:温研
申请(专利权)人:北京麟卓信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1