CN111722903A - 一种数据处理方法、装置、电子设备及存储介质 - Google Patents
一种数据处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111722903A CN111722903A CN202010547985.5A CN202010547985A CN111722903A CN 111722903 A CN111722903 A CN 111722903A CN 202010547985 A CN202010547985 A CN 202010547985A CN 111722903 A CN111722903 A CN 111722903A
- Authority
- CN
- China
- Prior art keywords
- data
- page
- target
- engine
- electronic device
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 21
- 238000000034 method Methods 0.000 claims abstract description 49
- 238000012545 processing Methods 0.000 claims description 47
- 230000006378 damage Effects 0.000 claims description 10
- 238000001514 detection method Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 abstract description 23
- 230000000875 corresponding effect Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 11
- 230000002093 peripheral effect Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 2
- 239000000919 ceramic Substances 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开关于一种数据处理方法、装置、电子设备及存储介质,应用于电子设备,该电子设备中运行有原生应用,该原生应用中包括通过目标页面引擎实现的目标应用页面,能够减少使用例如flutter引擎这类页面引擎来实现页面,带来APP运行过程中对内存的存储压力,以保证APP的正常运行。该方法包括:检测到该原生应用的内存占用率高于预设阈值,触发该目标页面引擎存储第一数据。该第一数据中至少包括该目标应用页面相关的业务数据。销毁该目标页面引擎。
Description
技术领域
本公开实施例涉及数据处理领域,尤其涉及一种数据处理方法、装置、电子设备及存储介质。
背景技术
电子设备可以通过设置在其中的应用程序(Application,APP)实现各项功能。一般的,电子设备可以通过在其中的操作系统中配置不同的页面引擎,实现各个APP中页面在显示屏上的展示。示例性的,电子设备可以通过配置flutter引擎,实现APP页面在苹果手机操作系统(iPhone Operating System,iOS)环境中的构建和展示。
然而,例如flutter引擎等页面引擎在进行页面实现时,会带来APP运行过程中对内存压力过大等问题,由此影响电子设备的正常运行。
发明内容
本公开关于一种数据处理方法、装置、电子设备及存储介质,能够减少使用例如flutter引擎这类页面引擎来实现页面,带来APP运行过程中对内存的存储压力,以保证APP的正常运行。
为达到上述目的,本公开实施例采用如下技术方案:
第一方面,提供一种数据处理方法,应用于电子设备,该电子设备中运行有原生应用,该原生应用中包括通过目标页面引擎实现的目标应用页面,该方法包括:检测到该原生应用的内存占用率高于预设阈值,触发该目标页面引擎存储第一数据。该第一数据中至少包括该目标应用页面相关的业务数据。销毁该目标页面引擎。基于该方案,电子设备可以销毁目标页面引擎(如flutter引擎)以释放相关数据在内存中存储所占用的空间,由此能够减少使用例如Flutter引擎这类页面引擎来实现页面,带来APP运行过程中对内存的存储压力,以保证APP的正常运行。
可选地,该目标页面引擎存储第一数据,包括:该目标页面引擎将该第一数据存储到该电子设备的本地存储空间中,或该电子设备的数据库中。基于该方案,该方案提供了一种第一数据的存储方案,即可以存储到本地的存储空间中,或者,存储到电子设备的已有数据库中。由此能够使得第一数据的存储不需要占用内存中的空间,以有效地减小内存的存储压力。
可选地,该目标页面引擎存储第一数据,包括:该目标页面引擎按照异步时序存储该第一数据。基于该方案,提供了一种第一数据的存储方案,即通过异步时序进行存储,由此能够使得该第一数据的存储可以不与当前正在进行的前台线程争抢资源,由此使得电子设备能够正常地运行。
可选地,该第一数据中还包括该目标应用页面的页面栈数据。基于该方案,该第一数据中可以包括多个页面之间相互关联的页面栈数据,保存的数据更加完整,更加有利于页面的恢复。
可选地,该方法还包括:检测到该原生应用的内存占用率高于预设阈值,触发销毁该目标页面相关的中间数据。基于该方案,在销毁引擎的同时,还可以同时销毁对应的中间数据,使得电子设备释放中间数据占用的内存空间,减小内存存储压力。
可选地,该第一数据是恢复该目标应用页面所必须的业务数据。基于该方案,确保了通过第一数据能够恢复获取目标应用页面。例如,该第一数据可以是当前目标应用页面所有数据中的一部分,由此减小存储第一数据的处理压力。需要说明的是,在本公开中,电子设备可以根据当前APP的状态,当前内存占用情况以及电子设备自身的型号等参数,确定是否采用分级存储,将目标应用页面的业务数据中的一部分作为第一数据存储。
可选地,该方法还包括:确定需要恢复该目标应用页面,触发重建该目标页面引擎。根据存储的该第一数据,通过该目标页面引擎恢复该目标应用页面。基于该方案,提供了一种页面恢复的方法。即当电子设备确定需要恢复目标应用页面时,可以根据该第一数据,在对应引擎中重建该页面,以便在显示屏上重新显示该目标应用页面。
可选地,该目标页面引擎存储的该第一数据,是序列化处理后的该目标应用页面相关的业务数据。基于该方案,提出了一种第一数据的存储方案,即通过将页面相关业务数据进行序列化处理后进行存储。
可选地,该根据存储的该第一数据,通过该目标页面引擎恢复该目标应用页面,包括:对该第一数据进行反序列化处理,并根据反序列化处理后获得的数据,通过该目标页面引擎恢复该目标应用页面。基于该方案,提供了一种页面恢复的方案,即当第一数据为序列化处理后的数据时,则需要对其进行反序列化处理,进而据此进行页面恢复。
可选地,该方法还包括:确定需要对存储的该目标应用页面相关的业务数据进行更新,触发该电子设备对该第一数据进行更新处理。基于该方案,提供了一种对第一数据进行序列化处理后能够获取的优势,即由于第一数据并非原生系统所生成的,因此,存储的第一数据可能无法直接被电子设备进行处理。而序列化后的第一数据,则可以被电子设备直接处理,由此当页面数据需要更新时,则电子设备可以直接将存储的第一数据进行更新,以便后续恢复获取的页面为最新的页面。
第二方面,提供一种数据处理装置,应用于电子设备,该电子设备中运行有原生应用,该原生应用中包括通过目标页面引擎实现的目标应用页面,该装置包括:检测模块,被配置为检测该原生应用的内存占用率高于预设阈值,存储模块,被配置为存储第一数据。该第一数据中至少包括该目标应用页面相关的业务数据。销毁模块,被配置为销毁该目标页面引擎。
可选地,该存储模块,被配置为将该第一数据存储到该电子设备的本地存储空间中,或该电子设备的数据库中。
可选地,该存储模块,被配置为按照异步时序存储该第一数据。
可选地,该第一数据中还包括该目标应用页面的页面栈数据。
可选地,该检测模块,被配置为检测该原生应用的内存占用率高于预设阈值,该销毁模块,被配置为销毁该目标页面相关的中间数据。
可选地,该第一数据是恢复该目标应用页面所必须的业务数据。
可选地,该装置还包括:重建模块。该检测模块,被配置为确定需要恢复该目标应用页面,该重建模块,被配置为重建该目标页面引擎。根据存储的该第一数据,通过该目标页面引擎恢复该目标应用页面。
可选地,该装置还包括:序列化处理模块,被配置为对该目标应用页面相关的业务数据进行序列化处理,以获得该第一数据。
可选地,该装置还包括:反序列化处理模块,被配置为对该第一数据进行反序列化处理,该重建模块,被配置为根据反序列化处理后获得的数据,通过该目标页面引擎恢复该目标应用页面。
可选地,该装置还包括:更新模块。该检测模块,被配置为确定需要对存储的该目标应用页面相关的业务数据进行更新,该更新模块,被配置为对该第一数据进行更新处理。
第三方面,提供一种电子设备,该电子设备中运行有原生应用,该原生应用中包括通过目标页面引擎实现的目标应用页面,该电子设备包括:处理器。用于存储处理器可执行指令的存储器。其中,该处理器被配置为:检测到该原生应用的内存占用率高于预设阈值,触发该目标页面引擎存储第一数据。该第一数据中至少包括该目标应用页面相关的业务数据。销毁该目标页面引擎。
第四方面,提供一种计算机可读存储介质,该计算机可读存储介质上存储有指令,该指令被处理器执行时实现:检测到该原生应用的内存占用率高于预设阈值,触发该目标页面引擎存储第一数据。该第一数据中至少包括该目标应用页面相关的业务数据。销毁该目标页面引擎。
可以理解地,上述提供的第二方面的数据处理装置及其可选的方案,第三方面提供的电子设备,第四方面提供的计算机可读存储介质均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1为本公开实施例提供的一种电子设备的组成示意图;
图2为本公开实施例提供的一种电子设备的逻辑组成示意图;
图3为本公开实施例提供的一种数据处理方法的流程示意图;
图4为本公开实施例提供的又一种数据处理方法的流程示意图;
图5为本公开实施例提供的又一种数据处理方法的流程示意图;
图6为本公开实施例提供的一种数据处理的时序关系的示意图;
图7为本公开实施例提供的一种数据处理装置的组成示意图;
图8为本公开实施例提供的又一种数据处理装置的组成示意图;
图9为本公开实施例提供的又一种数据处理装置的组成示意图;
图10为本公开实施例提供的又一种数据处理装置的组成示意图;
图11为本公开实施例提供的又一种数据处理装置的组成示意图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
一般而言,由于大多APP都需要适应不同电子设备中不同操作系统提供的不同运行环境,而使用不同操作系统对应的语言编译开发的APP一般无法被其他操作系统所识别使用,因此,在APP的开发过程中,通常都需要使用不同操作系统对应的多种语言对APP中的程序进行编译开发。由此会大幅提升APP开发过程中的各项成本。
为了应对上述问题,目前,可以采用flutter混编的形式,减少APP开发过程中重复开发的工作量。示例性的,由于在flutter框架下编译开发的程序能够同时在安卓操作系统(Android Operating System,Android)和iOS环境中运行,因此,在APP开发过程中,可以针对APP在Android以及iOS中运行时相似的程序段,在flutter框架下进行编译开发,其他部分的程序段则采用Android以及iOS对应的语言分别编译开发,即flutter混合编译,简称flutter混编。这样,在flutter框架中编译开发的程序就可以在Android和iOS环境下正常运行,因而使得这部分程序就可以不需重复开发,进而节省各项资源的消耗。
当APP中存在采用上述flutter混编的形式编译的程序时,电子设备在运行APP中的这些程序时,需要建立对应的flutter引擎(flutter Engine,FE)以实现这些程序的运行。而在使用flutter引擎等页面引擎在进行页面实现时,会带来APP运行过程中对内存压力过大等问题,由此影响电子设备的正常运行。
示例性的,随着APP的运行,flutter中间数据会越来越多的累积在内存中。然而,在flutter引擎运行过程中,由于其自身的固有机制,无法实现直接对flutter中间数据进行彻底删除。如要需要彻底删除flutter中间数据,就需要销毁该flutter引擎,这就会导致页面信息的丢失,这也是无法被接受的。因此,flutter中间数据会占据越来越多的内存空间,使得内存的存储压力越来越大。当内存中无法存储更多的数据时,就会出现内存溢出(Out of Memory,OOM),由此会导致APP崩溃等问题。
而随着智能手机的功能的多样化,高内存占用率的场景变得更为普遍,由此也使得内存压力过大的问题变得更加突出。
为了解决上述问题,本公开实施例提供一种数据处理方法,通过flutter引擎重建(Flutter Engine Restore,FER),能够减少使用例如flutter引擎这类页面引擎来实现页面,带来APP运行过程中对内存的存储压力,以保证APP的正常运行。
请参考图1,为本公开实施例提供的一种电子设备100的组成示意图。上述数据处理方法可以应用于该电子设备100中。如图1所示,电子设备100包括有处理器101和存储器102。
其中,处理器101可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器101可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processing unit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
存储器102可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器102还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器102中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器101所执行以实现本申请方法实施例提供的音频文件的处理方法。
在一些实施例中,电子设备100还可选包括有:外围设备接口103和至少一个外围设备。处理器101、存储器102和外围设备接口103之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口103相连。具体地,外围设备包括:射频电路104、显示屏105、摄像头组件106、音频电路107、定位组件108和电源109中的至少一种。
外围设备接口103可被用于将输入/输出(Input/Output,I/O)相关的至少一个外围设备连接到处理器101和存储器102。在一些实施例中,处理器101、存储器102和外围设备接口103被集成在同一芯片或电路板上;在一些其他实施例中,处理器101、存储器102和外围设备接口103中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不予限定。
射频电路104用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路104通过电磁信号与通信网络以及其他通信设备进行通信。射频电路104将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路104包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路104可以通过至少一种无线通信协议来与其它电子设备进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或Wi-Fi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路104还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本公开对此不加以限定。
显示屏105用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏105是触摸显示屏时,显示屏105还具有采集在显示屏105的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器101进行处理。此时,显示屏105还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏105可以为一个,设置电子设备100的前面板;显示屏105可以采用液晶显示屏(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等材质制备。
摄像头组件106用于采集图像或视频。可选地,摄像头组件106包括前置摄像头和后置摄像头。通常,前置摄像头设置在电子设备的前面板,后置摄像头设置在电子设备的背面。音频电路107可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器101进行处理,或者输入至射频电路104以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在电子设备100的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器101或射频电路104的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路107还可以包括耳机插孔。
定位组件108用于定位电子设备100的当前地理位置,以实现导航或基于位置的服务(Location Based Service,LBS)。定位组件108可以是基于美国的全球定位系统(GlobalPositioning System,GPS)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源109用于为电子设备100中的各个组件进行供电。电源109可以是交流电、直流电、一次性电池或可充电电池。当电源109包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,电子设备100还包括有一个或多个传感器110。该一个或多个传感器110包括但不限于:加速度传感器、陀螺仪传感器、压力传感器、指纹传感器、光学传感器以及接近传感器。
加速度传感器可以检测以电子设备100建立的坐标系的三个坐标轴上的加速度大小。陀螺仪传感器可以检测电子设备100的机体方向及转动角度,陀螺仪传感器可以与加速度传感器协同采集用户对电子设备100的3D动作。压力传感器可以设置在电子设备100的侧边框和/或触摸显示屏105的下层。当压力传感器设置在电子设备100的侧边框时,可以检测用户对电子设备100的握持信号。指纹传感器用于采集用户的指纹。光学传感器用于采集环境光强度。接近传感器,也称距离传感器,通常设置在电子设备100的前面板。接近传感器用于采集用户与电子设备100的正面之间的距离。
本领域技术人员可以理解,图1中示出的结构并不构成对电子设备100的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
示例性的,电子设备100中的处理器101可以调用存储器102中的程序,以实现以下数据处理方法:当内存占用率高于预设阈值时,获取该应用的第一数据,该第一数据包括该flutter引擎对应的业务数据;存储该第一数据;销毁该flutter引擎以及第二数据,该第二数据包括该flutter引擎对应的中间数据;重建该flutter引擎,通过该flutter引擎,根据存储的该第一数据恢复该应用的页面。
请参考图2,为本公开实施例提供的一种电子设备100的逻辑组成示意图。在本公开的一些实施例中,电子设备100可以在如图2所示的逻辑组成中实现对应的数据处理方法。
如图2所示,该电子设备100中可以包括native层201以及flutter层202。其中,native层201可以用于执行native框架下的程序。flutter层202可以通过容器技术加载到native层201中,形成一个相对独立的处理体系,以便运行flutter框架中的程序。示例性的,可以通过建立flutter引擎,使得基于flutter框架的程序得到正确的执行。
示例性的,native层201可以用于向flutter层202发送销毁flutter引擎的消息用于flutter层202获取第一数据并向native层201发送该第一数据,还可以用于执行flutter引擎的重启(本公开实施例中,flutter引擎的重启可以包括销毁flutter引擎以及重建flutter引擎)。该native层201还可以对flutter业务数据以及其他数据进行保存处理。flutter层202可以用于获取flutter业务数据以及其他数据,如页面栈数据,并将这些数据发送给native层201进行保存。flutter层202还可以用于将flutter业务数据以及其他数据通过flutter引擎实现页面的重建。
需要说明的是,电子设备100可以为手机、平板电脑、笔记本电脑、台式计算机、便携式计算机等,其中包括的native层201以及flutter层202的功能均可通过如图1所示的电子设备100中的处理器101实现。另外,native层也可以称为native侧,flutter层也可称为flutter侧。
以下结合附图对本公开实施例提供的数据处理方法进行详细说明。为了更加清楚的对本公开实施例提供的数据处理方法进行说明,以下以该方法应用于运行有APP的电子设备,该APP的程序中包括基于flutter框架的程序段,并且该基于flutter框架的程序段已经被运行(即flutter引擎已经建立),第一数据中包括flutter引擎对应的业务数据,第二数据中包括flutter引擎对应的中间数据为例进行说明。如图3所示,该数据处理方法包括S301-S302。
S301、检测到该原生应用的内存占用率高于预设阈值,触发该目标页面引擎存储第一数据。该第一数据中至少包括该目标应用页面相关的业务数据。
示例性的,当电子设备的内存占用率高于预设阈值时,获取应用的第一数据,该第一数据包括该flutter引擎对应的业务数据。
电子设备可以在运行APP的过程中,实时地监控内存占用率的情况。其中,该内存占用率可以是电子设备中,可以分配给APP使用的内存的占用率。
可以理解的是,随着APP的运行,内存中的第二数据会越来越多,对应的内存占用率会逐渐提升。当内存占用率高于预设阈值时,就可能出现OOM的情况,进而使得APP有崩溃的风险。因此,本公开实施例中,当内存占用率高于该预设阈值时,电子设备就可以开始执行对应的数据处理方法,以降低APP崩溃的风险,保证APP能够被正常运行。
示例性的,如图4所示,native侧在确定内存占用率高于预设阈值时,生成销毁flutter引擎的销毁命令(即执行图4中的S401),并向flutter侧发送该销毁命令(即执行图4中的S402)。以便flutter侧知晓即将开始flutter引擎的销毁。作为对该命令的响应,flutter侧可以在接收到该销毁命令后,获取第一数据(即执行图4中的S403),并将获取的第一数据发送给native侧(即执行图4中的S404)。其中,native侧与flutter侧的数据交互可以通过新建Method通道(Method Channel)实现。例如,native侧可以通过该MethodChannel向flutter侧发送销毁命令,又如,flutter侧可以通过该Method Channel向native侧发送第一数据。当然,该数据交互还可以通过其他途径实现,此处仅为示例性说明。
在获取该第一数据后,电子设备可以执行存储第一数据的操作。
在确定需要对flutter引擎进行销毁后,电子设备可以存储当前的flutter业务数据,以避免页面数据的丢失导致的页面无法恢复的情况出现。
示例性的,如图4所示,native侧可以对接收到的第一数据进行存储处理(即执行图4中的S405)。其中,native侧可以将该第一数据存储到flutter已有的本地数据库中,也可以将该第一数据存储到其他位置,例如,可以将该第一数据存储到电子设备的本地存储空间中。
需要说明的是,在本申请的一些实施例中,该存储第一数据的操作可以是获取第一数据后立即进行的,也可以是以异步的时序进行的,由此可以使得该存储第一数据的操作可以不对目前前台运行的线程造成资源抢占的负面效果。
需要说明的是,本申请的一些实施例中,该第一数据也可以只包括当前页面对应业务数据中的一部分。可以理解的是,当前页面对应的业务数据可以包括多个不同的数据组,在进行该页面的恢复时,可能不会用到上说所有的数据组,因此,为了减轻电子设备获取存储第一数据的处理压力,可以仅存储该多个不同的数据组中第一部分恢复页面时一定要用到的数据组,由此减小第一数据的数据量。
S302、销毁所述目标页面引擎。
示例性的,在完成对第一数据的存储后,电子设备就可以开始执行flutter引擎的销毁。可以理解的是,随着flutter引擎的销毁,其对应的第二数据也会从内存中移除,由此起到缓解内存压力的目的。
示例性的,如图4所示,在完成对第一数据的存储后,native侧可以对flutter引擎以及中间数据(如第二数据)进行销毁,即执行S406。
可以理解的是,由于基于flutter框架的程序的运行需求,电子设备可以重建flutter引擎,以便实现这些程序的正常运行。在重建flutter引擎后,电子设备可以通过该flutter引擎,根据存储的第一数据恢复当前的页面,使得用户对于APP的使用不受影响。
示例性的,如图4所示,native侧可以在销毁flutter引擎后,重建flutter引擎,即执行S407。随后,native侧可以向flutter侧发送重建消息,即执行S408,以便通知flutter侧flutter引擎已经被重建。则flutter侧可以从native侧读取存储的第一数据,即执行S409,并根据该第一数据恢复该APP的页面,即执行S410。
可选的,电子设备可以在完成页面重建之后,删除存储的第一数据,以便释放该第一数据占用的存储空间,同时避免之后存储以及调用数据时的数据污染。
这样,电子设备通过销毁flutter引擎以及第二数据,实现了对内存空间的释放。同时,由于在销毁flutter引擎之前,存储了第一数据,因此电子设备可以在重建flutter引擎之后根据该第一数据恢复页面,以避免对用户体验的影响。可以看到,在flutter引擎重建之后,由于其中间数据已经从内存中移除,也就在保证APP正常运行的前提下,实现了降低内存压力的目的。另外,由于该过程的执行周期非常短,一般不会被用户所感知,因此,不会影响用户的使用体验。
请参考图5,为本公开实施例提供的另一种数据处理方法的流程示意图。如图5所示,该方法可以包括S501-S512。
S501、native侧在确定内存占用率高于预设阈值时,生成销毁flutter引擎的销毁命令。
S502、native侧向flutter侧发送销毁命令。
S503、flutter侧获取第一数据。
上述S501-S503分别与图4所示的S401-S403的执行方法类似,此处不再赘述。
需要说明的是,本公开实施例中,第一数据除可以包括flutter业务数据之外,还可以包括其他数据。示例性的,第一数据可以包括flutter业务数据以及页面栈数据。其中,页面栈数据可以用于flutter业务数据的多个页面之间的关系,以便在恢复页面时,能够正确地实现的多个页面的恢复。
S504、flutter侧对第一数据进行序列化处理。
一般而言,由于flutter侧与native侧的数据流处理相对独立,因此,native侧无法直接对flutter侧的数据进行识别与处理。也就是说,flutter侧获取的第一数据一般无法被native侧直接使用。本公开实施例中,flutter侧可以在向native侧发送第一数据之前,对其进行转换处理,使得转换后的数据能够被native侧直接识别并处理。
示例性的,该转换处理可以为序列化处理。例如,flutter侧可以分别对业务数据以及页面站数据进行序列化处理。
需要说明的是,当第一数据为普通类型的数据时,flutter侧直接根据序列化的格式要求进行转换即可。而当第一数据中包括Redux等高级数据类型的数据时,flutter侧可以将这些数据根据Built Value格式对其进行转换,如将其序列化为常用的json string格式。
当然,上述转换处理还可以通过除序列化处理之外的方法实现对数据的转换。例如,将第一数据转换为可扩展标记语言(Extensible Markup Language,XML)、二进制格式的语言等形式。本公开实施例对此不作限制。
S505、flutter侧向native侧发送序列化后的第一数据。
S506、native侧对接收到的第一数据进行存储处理。
S507、native侧对flutter引擎以及第二数据进行销毁。
S508、native侧重建flutter引擎。
可以理解的是,由于native侧接收到的第一数据已经经过序列化处理,因此,native侧可以对这些数据直接进行处理。例如,在flutter引擎重建之前,当native接收到更新该第一数据的指示(如电子设备接收到用户输入的更新当前页面的操作等)时,native就可以直接对该第一数据进行更新处理,以便电子设备能够正确地对用户输入的操作进行响应。
S509、native侧向flutter侧发送重建消息。
S510、flutter侧从native侧读取存储的第一数据。
S511、flutter侧对该第一数据进行反序列化处理。
S512、flutter侧根据反序列化处理后的第一数据恢复APP的页面。
可以理解的是,当电子设备在flutter引擎被重建之前接收到了用户输入的更新当前页面的操作(如在固定区域输入字符等)时,native可以对存储的第一数据进行实时的更新。因此,flutter侧根据该第一数据恢复的APP页面也就会包括用户更新的信息。
需要说明的是,上述示例是以native侧在确定内存占用率高于预设阈值的时刻出现后,即执行flutter引擎的销毁为例进行说明的,在本公开的另一些实施例中,native侧还可以根据内存占用率是否持续的高于该预设阈值,来判断是否需要执行flutter引擎的销毁。
示例性的,在执行上述S302或S406或S507之前,native侧可以持续不断地监测内存占用率的情况。在native侧接收到flutter侧发送的第一数据后,在存储该第一数据之前,native侧可以判断内存占用率是否稳定高于预设阈值,并据此确定是否执行对第一数据的保存。
例如,请参考图6,native侧在T1时刻监测到内存占用率高于预设阈值,则native侧可以在该T1时刻向flutter侧发送销毁命令,并在T2时刻接收到了flutter侧发送的第一数据。此时native可以判断T3时刻之前的预设时长(如T2时刻到T3)内,内存占用率是否始终高于预设阈值。如果内存占用率始终高于预设阈值,则确定存在APP崩溃的风险,那么native侧可以执行对第一数据的存储以及flutter引擎的销毁,以保证APP正常运行。如果内存占用率并未始终高于预设阈值,则说明内存的存储压力并没有达到使得APP崩溃的程度,那么native侧可以不对该第一数据进行存储以及flutter引擎的销毁等处理,转而继续监测内存占用率,直到符合上述条件,再进行第一数据的存储以及flutter引擎的销毁等后续处理。以便电子设备能够在保证APP正常运行的前提下,尽量减少对数据的处理操作,更有利于APP的稳定运行。
这样,电子设备通过销毁flutter引擎以及第二数据,实现了对内存空间的释放。同时,由于第一数据在被存储之前进行了序列化处理,因此,在flutter引擎被重建之前,电子设备依然可以对第一数据进行更新,以便电子设备能够对flutter引擎重启过程中接收到的用户输入的操作进行正确的响应。由于在销毁flutter引擎之前,存储了第一数据,因此电子设备可以在重建flutter引擎之后根据该第一数据恢复页面,以避免对用户体验的影响。可以看到,在flutter引擎重建之后,由于其中间数据已经从内存中移除,也就在保证APP正常运行的前提下,实现了降低内存压力的目的。
以上说明主要从电子设备的角度对本公开实施例提供的方案进行了介绍。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块,这些执行各个功能相应的硬件结构和/或软件模块可以构成一个电子设备。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本公开实施例可以根据上述方法示例对电子设备进行功能模块的划分,例如,电子设备可以包括数据处理装置,数据处理装置可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本公开实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图7示出了上述实施例中涉及的数据处理装置的一种可能的组成示意图,如图7所示,该数据处理装置700可以包括:检测模块701,被配置为检测该原生应用的内存占用率高于预设阈值,存储模块702,被配置为存储第一数据。该第一数据中至少包括该目标应用页面相关的业务数据。销毁模块703,被配置为销毁该目标页面引擎。
可选地,该存储模块702,被配置为将该第一数据存储到该电子设备的本地存储空间中,或该电子设备的数据库中。
可选地,该存储模块702,被配置为按照异步时序存储该第一数据。
可选地,该第一数据中还包括该目标应用页面的页面栈数据。
可选地,该检测模块701,被配置为检测该原生应用的内存占用率高于预设阈值,该销毁模块703,被配置为销毁该目标页面相关的中间数据。
可选地,该第一数据是恢复该目标应用页面所必须的业务数据。
可选地,如图8所示,该装置还包括:重建模块704。该检测模块701,被配置为确定需要恢复该目标应用页面,该重建模块704,被配置为重建该目标页面引擎。根据存储的该第一数据,通过该目标页面引擎恢复该目标应用页面。
可选地,如图9所示,该装置还包括:序列化处理模块705,被配置为对该目标应用页面相关的业务数据进行序列化处理,以获得该第一数据。
可选地,如图10所示,该装置还包括:反序列化处理模块706,被配置为对该第一数据进行反序列化处理,该重建模块704,被配置为根据反序列化处理后获得的数据,通过该目标页面引擎恢复该目标应用页面。
可选地,如图11所示,该装置还包括:更新模块707。该检测模块701,被配置为确定需要对存储的该目标应用页面相关的业务数据进行更新,该更新模块707,被配置为对该第一数据进行更新处理。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。示例性的,如图7-图11所示出的数据处理装置的功能,都可以通过如图1所示的电子设备100中的处理器101实现。
本公开实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,当所述存储介质中的指令由计算机设备的处理器执行时,使得计算机能够执行上述所示实施例提供的数据处理方法。可选地,存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本公开实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机设备执行上述所示实施例提供的数据处理方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种数据处理方法,其特征在于,应用于电子设备,所述电子设备中运行有原生应用,所述原生应用中包括通过目标页面引擎实现的目标应用页面,所述方法包括:
检测到所述原生应用的内存占用率高于预设阈值,触发所述目标页面引擎存储第一数据;所述第一数据中至少包括所述目标应用页面相关的业务数据;
销毁所述目标页面引擎。
2.根据权利要求1所述的方法,其特征在于,所述目标页面引擎存储第一数据,包括:
所述目标页面引擎将所述第一数据存储到所述电子设备的本地存储空间中,或所述电子设备的数据库中。
3.根据权利要求1或2所述的方法,其特征在于,所述目标页面引擎存储第一数据,包括:
所述目标页面引擎按照异步时序存储所述第一数据。
4.根据权利要求3所述的方法,其特征在于,所述第一数据中还包括所述目标应用页面的页面栈数据。
5.根据权利要求1或2或4所述的方法,其特征在于,所述方法还包括:
检测到所述原生应用的内存占用率高于预设阈值,触发销毁所述目标页面相关的中间数据。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定需要恢复所述目标应用页面,触发重建所述目标页面引擎;
根据存储的所述第一数据,通过所述目标页面引擎恢复所述目标应用页面。
7.根据权利要求6所述的方法,其特征在于,所述目标页面引擎存储的所述第一数据,是序列化处理后的所述目标应用页面相关的业务数据。
8.一种数据处理装置,其特征在于,应用于电子设备,所述电子设备中运行有原生应用,所述原生应用中包括通过目标页面引擎实现的目标应用页面,所述装置包括:
检测模块,被配置为检测所述原生应用的内存占用率高于预设阈值,
存储模块,被配置为存储第一数据;所述第一数据中至少包括所述目标应用页面相关的业务数据;
销毁模块,被配置为销毁所述目标页面引擎。
9.一种电子设备,其特征在于,所述电子设备中运行有原生应用,所述原生应用中包括通过目标页面引擎实现的目标应用页面,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
检测到所述原生应用的内存占用率高于预设阈值,触发所述目标页面引擎存储第一数据;所述第一数据中至少包括所述目标应用页面相关的业务数据;
销毁所述目标页面引擎。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,其特征在于,所述指令被处理器执行时实现:
检测到所述原生应用的内存占用率高于预设阈值,触发所述目标页面引擎存储第一数据;所述第一数据中至少包括所述目标应用页面相关的业务数据;
销毁所述目标页面引擎。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010547985.5A CN111722903A (zh) | 2020-06-16 | 2020-06-16 | 一种数据处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010547985.5A CN111722903A (zh) | 2020-06-16 | 2020-06-16 | 一种数据处理方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111722903A true CN111722903A (zh) | 2020-09-29 |
Family
ID=72566949
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010547985.5A Pending CN111722903A (zh) | 2020-06-16 | 2020-06-16 | 一种数据处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111722903A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112667332A (zh) * | 2020-12-21 | 2021-04-16 | 上海多维度网络科技股份有限公司 | 数据处理方法及装置、存储介质、电子装置 |
CN113467854A (zh) * | 2021-06-01 | 2021-10-01 | 北京达佳互联信息技术有限公司 | 应用程序启动方法、装置、电子设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004062873A (ja) * | 2002-05-31 | 2004-02-26 | Docomo Communications Laboratories Usa Inc | マルチプラットフォームアプリケーションのためのブラウザセッションモビリティシステム |
CN109976611A (zh) * | 2019-03-21 | 2019-07-05 | 维沃移动通信有限公司 | 终端设备的控制方法及终端设备 |
CN109992438A (zh) * | 2017-12-29 | 2019-07-09 | 广东欧珀移动通信有限公司 | 信息处理方法、装置、计算机设备和计算机可读存储介质 |
US20190220318A1 (en) * | 2016-09-27 | 2019-07-18 | Huawei Technologies Co., Ltd. | Memory Reclamation Method and Apparatus |
CN110110262A (zh) * | 2019-05-07 | 2019-08-09 | 海信电子科技(深圳)有限公司 | 浏览器内存管理方法、装置和设备 |
CN110413368A (zh) * | 2019-08-07 | 2019-11-05 | 上海千杉网络技术发展有限公司 | 页面切换方法、装置、电子设备及机器可读存储介质 |
CN110532197A (zh) * | 2019-08-30 | 2019-12-03 | Oppo(重庆)智能科技有限公司 | 内存回收方法及装置、电子设备、存储介质 |
-
2020
- 2020-06-16 CN CN202010547985.5A patent/CN111722903A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004062873A (ja) * | 2002-05-31 | 2004-02-26 | Docomo Communications Laboratories Usa Inc | マルチプラットフォームアプリケーションのためのブラウザセッションモビリティシステム |
US20190220318A1 (en) * | 2016-09-27 | 2019-07-18 | Huawei Technologies Co., Ltd. | Memory Reclamation Method and Apparatus |
CN109992438A (zh) * | 2017-12-29 | 2019-07-09 | 广东欧珀移动通信有限公司 | 信息处理方法、装置、计算机设备和计算机可读存储介质 |
CN109976611A (zh) * | 2019-03-21 | 2019-07-05 | 维沃移动通信有限公司 | 终端设备的控制方法及终端设备 |
CN110110262A (zh) * | 2019-05-07 | 2019-08-09 | 海信电子科技(深圳)有限公司 | 浏览器内存管理方法、装置和设备 |
CN110413368A (zh) * | 2019-08-07 | 2019-11-05 | 上海千杉网络技术发展有限公司 | 页面切换方法、装置、电子设备及机器可读存储介质 |
CN110532197A (zh) * | 2019-08-30 | 2019-12-03 | Oppo(重庆)智能科技有限公司 | 内存回收方法及装置、电子设备、存储介质 |
Non-Patent Citations (1)
Title |
---|
孙强 JIMMY: "Android 动态界面开发框架 Tangram 使用完整教程", Retrieved from the Internet <URL:https://blog.csdn.net/u013541140/article/details/89517186> * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112667332A (zh) * | 2020-12-21 | 2021-04-16 | 上海多维度网络科技股份有限公司 | 数据处理方法及装置、存储介质、电子装置 |
CN113467854A (zh) * | 2021-06-01 | 2021-10-01 | 北京达佳互联信息技术有限公司 | 应用程序启动方法、装置、电子设备及存储介质 |
CN113467854B (zh) * | 2021-06-01 | 2023-10-24 | 北京达佳互联信息技术有限公司 | 应用程序启动方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020244497A1 (zh) | 一种柔性屏幕的显示方法及电子设备 | |
WO2021213120A1 (zh) | 投屏方法、装置和电子设备 | |
CN112348732B (zh) | 基于图形渲染管线的模型推理方法、装置及存储介质 | |
WO2021115194A1 (zh) | 一种应用图标的显示方法及电子设备 | |
WO2021017901A1 (zh) | 一种屏幕显示方法及电子设备 | |
WO2021032097A1 (zh) | 一种隔空手势的交互方法及电子设备 | |
WO2021063237A1 (zh) | 电子设备的控制方法及电子设备 | |
CN108762881B (zh) | 界面绘制方法、装置、终端及存储介质 | |
US11899879B2 (en) | Stylus detection method, system, and related apparatus for switching frequencies for detecting input signals | |
CN117063461A (zh) | 一种图像处理方法和电子设备 | |
CN106648496B (zh) | 电子设备及用于控制电子设备的显示器的方法 | |
WO2021110133A1 (zh) | 一种控件的操作方法及电子设备 | |
WO2021042894A1 (zh) | 一种电子设备的sim卡掉卡恢复方法及电子设备 | |
CN110572866B (zh) | 一种唤醒锁的管理方法及电子设备 | |
CN110288689B (zh) | 对电子地图进行渲染的方法和装置 | |
CN112749362B (zh) | 控件创建方法、装置、设备及存储介质 | |
CN113190362B (zh) | 服务调用方法、装置、计算机设备及存储介质 | |
CN115589051B (zh) | 充电方法和终端设备 | |
CN111722903A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN114035721B (zh) | 触控屏显示方法、装置及存储介质 | |
CN115016697A (zh) | 投屏方法、计算机设备、可读存储介质和程序产品 | |
US11467894B2 (en) | Screen freezing processing method and terminal | |
CN115686252B (zh) | 触控屏中的位置信息计算方法和电子设备 | |
CN114168873B (zh) | 一种页面弹框的处理方法、装置、终端设备及存储介质 | |
CN114332118A (zh) | 图像处理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |