CN109189498B - Android横竖屏数据同步方法、装置、终端及可读介质 - Google Patents
Android横竖屏数据同步方法、装置、终端及可读介质 Download PDFInfo
- Publication number
- CN109189498B CN109189498B CN201810890199.8A CN201810890199A CN109189498B CN 109189498 B CN109189498 B CN 109189498B CN 201810890199 A CN201810890199 A CN 201810890199A CN 109189498 B CN109189498 B CN 109189498B
- Authority
- CN
- China
- Prior art keywords
- data sharing
- screen state
- screen
- service control
- control variable
- 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.)
- Active
Links
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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/1423—Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display
Abstract
本发明实施例公开了一种Android横竖屏数据同步方法、装置、终端及可读介质,其中该方法包括:根据接收的切换指令将第一屏幕状态的业务控件切换为第二屏幕状态的业务控件,调用协议的引用关系切换函数将数据共享协议的引用关系切换为第二屏幕状态;获取数据共享对象中的业务控件变量,根据业务控件变量设置第二屏幕状态的业务控件信息;根据接收的更新消息更新业务控件变量,并通过引用关系切换后的数据共享协议将更新后的业务控件变量发送至第二屏幕状态,以更新第二屏幕状态的业务控件信息。本发明实施例提供的一种Android横竖屏数据同步方法、装置、终端及可读介质,实现了Android横竖屏数据同步,提升了数据同步稳定性,避免了数据同步异常的情况。
Description
技术领域
本发明实施例涉及计算机技术,尤其涉及一种Android横竖屏数据同步方法、装置、终端及可读介质。
背景技术
通常Android终端横竖屏切换方法为,完全关闭横/竖屏后再加载竖/横屏,即横屏和竖屏间的业务逻辑是完全分离的。若要完成横屏与竖屏切换时的数据同步,需要在将横/竖屏关闭前将横/竖屏中所有业务状态信息进行复制,复制的业务状态信息用于竖/横屏加载时实现数据同步。若实现多次横屏与竖屏切换,则需要多次复制横/竖屏中所有业务状态信息,容易导致业务功能紊乱,且可能出现数据同步异常的情况。
发明内容
有鉴于此,本发明实施例提供了一种Android横竖屏数据同步方法、装置、终端及可读介质,实现了Android横竖屏数据同步,提升了数据同步稳定性,避免了数据同步异常的情况。
第一方面,本发明实施例提供了一种Android横竖屏数据同步方法,包括:
接收切换指令,根据所述切换指令将第一屏幕状态的业务控件切换为第二屏幕状态的业务控件,并调用协议的引用关系切换函数将数据共享协议的引用关系切换为第二屏幕状态;
获取数据共享对象中的业务控件变量,并根据所述业务控件变量设置第二屏幕状态的业务控件信息,其中所述数据共享对象为数据共享器类的静态全局变量对象;
当接收到业务控件变量的更新消息时,根据所述更新消息更新数据共享对象中的业务控件变量,并通过引用关系切换后的数据共享协议将更新后的业务控件变量发送至第二屏幕状态,以更新第二屏幕状态的业务控件信息。
可选的,在所述接收切换指令之前,还包括:
在第一屏幕状态首次被打开时,在Activity的生命周期函数onCreate函数中调用控件加载方法加载第一屏幕状态的业务控件;
在第二屏幕状态首次被打开时,在Activity的生命周期函数onCreate函数中调用控件加载方法加载第二屏幕状态的业务控件。
可选的,在所述接收切换指令之前,还包括:
调用共享器类定义方法定义数据共享器类;
调用数据共享对象定义方法定义数据共享器类的数据共享对象;
在数据共享对象中调用业务控件变量定义方法定义业务控件变量,并初始化业务控件变量,且当接收到业务控件变量的更新消息时,根据所述更新消息更新业务控件变量。
可选的,在所述接收切换指令之前,还包括:
调用预定义的数据共享对象获取方法判断是否可以获取到数据共享对象;
若是,则调用返回方法将获取到的数据共享对象进行返回;
若否,则调用数据共享对象实例化方法构造数据共享对象,并调用返回方法将构造好的数据共享对象进行返回。
可选的,在所述接收切换指令之前,还包括:
在数据共享对象中调用协议定义方法定义数据共享协议;
在数据共享对象中调用协议的引用关系切换函数的定义方法定义协议的引用关系切换函数,其中协议的引用关系切换函数包括利用this指针获取屏幕切换后的屏幕状态的协议的引用关系切换函数;
将所述数据共享协议复写到第一屏幕状态以及第二屏幕状态中。
可选的,所述获取数据共享对象中的业务控件变量,包括:
通过预定义的业务控件变量获取方法获取数据共享对象中的业务控件变量。
可选的,当所述第一屏幕状态为竖屏时,所述第二屏幕状态为横屏;当所述第一屏幕状态为横屏时,所述第二屏幕状态为竖屏。
第二方面,本发明实施例提供了一种Android横竖屏数据同步装置,包括:
业务控件切换模块,用于接收切换指令,根据所述切换指令将第一屏幕状态的业务控件切换为第二屏幕状态的业务控件,并调用协议的引用关系切换函数将数据共享协议的引用关系切换为第二屏幕状态;
业务控件信息设置模块,用于获取数据共享对象中的业务控件变量,并根据所述业务控件变量设置第二屏幕状态的业务控件信息,其中所述数据共享对象为数据共享器类的静态全局变量对象;
业务控件信息更新模块,用于当接收到业务控件变量的更新消息时,根据所述更新消息更新数据共享对象中的业务控件变量,并通过引用关系切换后的数据共享协议将更新后的业务控件变量发送至第二屏幕状态,以更新第二屏幕状态的业务控件信息。
第三方面,本发明实施例提供了一种终端,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任一实施例所述的Android横竖屏数据同步方法。
第四方面,本发明实施例提供了一种可读介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任一实施例所述的Android横竖屏数据同步方法。
本发明实施例提供的一种Android横竖屏数据同步方法、装置、终端及可读介质,当第一屏幕状态切换到第二屏幕状态时,将数据共享协议的引用关系切换为第二屏幕状态,即数据共享协议引用屏幕切换后的屏幕状态(即第二屏幕状态);第二屏幕状态可以获取数据共享对象中的业务控件变量,也就是切换时业务控件变量的当前值,并根据获取的业务控件变量设置业务控件信息;当数据共享对象中的业务控件变量根据更新消息进行更新时,通过引用关系切换后的数据共享协议将更新后的业务控件变量发送至第二屏幕状态,以更新第二屏幕状态的业务控件信息。通过设置数据共享对象实现了Android横竖屏切换后当前业务控件信息的同步,提升了数据同步稳定性,避免了数据同步异常的情况;通过切换数据共享协议的引用关系,实现了更新后的业务控件变量只定向发送给屏幕切换后的屏幕状态,避免了将更新后的业务控件变量发送至所有屏幕状态,减少了系统资源占用。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的一种Android横竖屏数据同步方法流程图;
图2是本发明实施例二提供的一种Android横竖屏数据同步装置结构示意图;
图3是本发明实施例三提供的一种终端的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,以下将参照本发明实施例中的附图,通过实施方式清楚、完整地描述本发明的技术方案,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
图1是本发明实施例一提供的一种Android横竖屏数据同步方法流程图,本实施例可适用于Android横竖屏数据同步的情况,该方法可以由终端实现,具体可通过终端中的软件和/或硬件来实施。
参见图1,该Android横竖屏数据同步方法包括如下步骤:
S110、接收切换指令,根据切换指令将第一屏幕状态的业务控件切换为第二屏幕状态的业务控件,并调用协议的引用关系切换函数将数据共享协议的引用关系切换为第二屏幕状态。
在Android终端横竖屏切换时,横竖屏中多个业务控件需要进行业务控件信息的同步,其中业务控件可以包括进度条控件、音量调节控件以及亮度调节控件等等,相应的业务控件信息可以是进度条控件信息、音量调节控件信息以及亮度调节控件信息等等,例如可以是进度条控件的播放进度信息、音量调节控件的音量大小信息以及亮度调节控件的屏幕亮暗信息等等。本发明实施例中以进度条控件信息在横竖屏切换时的同步方法为例进行阐述,其他业务控件信息在横竖屏切换时的同步过程可参照进度条控件信息的同步过程。
其中,切换指令可以是通过用户按压Android终端的物理按键生成的,也可以是通过用户触摸Android终端用户界面上的虚拟按键生成的,还可以是通过Android终端内置陀螺仪等方向传感器感应到Android终端放置方向变化后生成的。Android终端接收到切换指令后,可以根据指令进行屏幕状态切换,也可以理解为将第一屏幕状态的业务控件切换为第二屏幕状态的业务控件,其中第一屏幕状态的业务控件和第二屏幕状态的业务控件可以是已经加载好,并存储于终端内存中的业务控件。其中,当第一/二屏幕状态的业务控件加载好之后,可以处理更新消息,用以进行业务控件信息的更新操作。
其中,通过数据共享协议,可以将数据共享对象中根据更新消息更新后的业务控件变量发送至数据共享协议所引用的对象,也就是说数据共享对象中根据更新消息更新后的业务控件变量可以在数据共享对象与数据共享协议所引用的对象之间传输,即数据共享协议为数据共享对象与数据共享协议所引用的对象之间进行通信的通道。
其中,切换数据共享协议的引用关系,可以理解为切换数据共享协议所引用的对象。当数据共享协议所引用的对象发生变更时,则数据共享对象中根据更新消息更新后的业务控件变量发送的对象会发生改变。示例性的,当第一屏幕状态为横屏,第二屏幕状态为竖屏时,根据切换指令将横屏的业务控件切换为竖屏的业务控件,相应的也会将数据共享协议的引用关系从横屏切换为竖屏,因此数据共享对象中根据更新消息更新后的业务控件变量也会从发送至横屏切换为发送至竖屏;当第一屏幕状态为竖屏,第二屏幕状态为横屏时,根据切换指令将竖屏的业务控件切换为横屏的业务控件,相应的也会将数据共享协议的引用关系从竖屏切换为横屏,因此数据共享对象中根据更新消息更新后的业务控件变量也会从发送至竖屏切换为发送至横屏。
其中,协议的引用关系切换函数可以进行预先定义,可以在接收到切换指令后,第一屏幕的业务控件切换为第二屏幕的业务控件的同时,调用预先定义的协议的引用关系切换函数进行数据共享协议的引用关系切换;也可以在接收到切换指令后,第一屏幕的业务控件切换为第二屏幕的业务控件之后,调用预先定义的协议的引用关系切换函数进行数据共享协议的引用关系切换。
可选的,在接收切换指令之前,还包括:
在第一屏幕状态首次被打开时,在Activity的生命周期函数onCreate函数中调用控件加载方法加载第一屏幕状态的业务控件;在第二屏幕状态首次被打开时,在Activity的生命周期函数onCreate函数中调用控件加载方法加载第二屏幕状态的业务控件。
其中,Activity可以理解为Android系统中的显示页面信息,Android终端需要在Activity的生命周期函数onCreate函数中来实现对进度条控件以及其他业务控件的加载操作,其中onCreate函数可以是Android终端在启动Activity的时候自动进行调用的。示例性的,在Activity的生命周期函数onCreate函数中调用控件加载方法加载进度条控件,具体可以是:
ProgressBar progressBar=(ProgressBar)findViewByid(R.id.progress);
其中,findViewByid可以理解为进度条业务控件是根据id进行加载的;R.id.progress可以理解为预定义的进度条id信息;其中,在根据控件加载方法加载后,可以得到一个ProgressBar类型的progressBar对象信息;其中,ProgressBar类型也可以是预先定义的类。
其中,若首次打开的为第一屏幕状态,则首先加载第一屏幕状态的业务控件,当首次从第一屏幕状态切换为第二屏幕状态时,则加载第二屏幕状态的业务控件;若首次打开的为第二屏幕状态,则首先加载第二屏幕状态的业务控件,当首次从第二屏幕状态切换为第一屏幕状态时,则加载第一屏幕状态的业务控件。其中,当第一/二屏幕状态首次加载业务控件后,存储于终端内存中,等再次切换到第一/二屏幕状态时,无需重复加载业务控件。
通过预先加载第一/二屏幕状态的业务控件,可以使横竖屏数据同步更加便捷,在同步过程中无需复制第一/二屏幕状态下所有数据信息,提升了数据同步稳定性,避免了数据同步异常的情况。
S120、获取数据共享对象中的业务控件变量,并根据业务控件变量设置第二屏幕状态的业务控件信息,其中数据共享对象为数据共享器类的静态全局变量对象。
其中,数据共享器类可以预先定义,在定义好数据共享器类后,可以创建数据共享器类对象,即数据共享对象。其中,可以在数据共享对象中定义业务控件变量,可以理解为一个数据共享对象对应一个业务控件,在一个数据共享对象中可以存储对应业务控件的业务控件数据。其中,数据共享对象为静态全局变量对象,可以理解为任意函数获取该数据共享对象时,皆可以获取到同一个数据共享对象。因此,从第一屏幕状态切换为第二屏幕状态时第二屏幕获取的数据共享对象,与后续第二屏幕状态切换回第一屏幕状态时第一屏幕状态获取的数据共享对象是相同的对象。
可选的,在接收切换指令之前,还包括:
调用共享器类定义方法定义数据共享器类;调用数据共享对象定义方法定义数据共享器类的数据共享对象;在数据共享对象中调用业务控件变量定义方法定义业务控件变量,并初始化业务控件变量,且当接收到业务控件变量的更新消息时,根据更新消息更新业务控件变量。
其中,调用共享器类定义方法定义数据共享器类,具体可以是:
通过调用Public Class DataShare{}方法定义数据共享器类。其中,数据共享器类为Public共有类型,使得其他类具备该数据共享类的访问权限。其中,数据共享器类的类名是DataShare,该共享器类的类名可以根据研发人员需求进行更改,在此不做限定。
其中,调用数据共享对象定义方法定义数据共享器类的数据共享对象,具体可以是:
通过调用public static DataShare mDataShare()方法定义数据共享对象。其中,数据共享器对象为Public共有类型,使得其他对象具备该数据共享对象的访问权限。其中,数据共享对象为static静态类型的,可以使得横竖屏切换后的屏幕状态皆获取同一个数据共享对象。其中,数据共享对象为数据共享器类DataShare的对象,名称为mDataShare,该共享器对象的名称可以根据研发人员需求进行更改,在此不做限定。
其中,在数据共享对象中调用业务控件变量定义方法定义业务控件变量,具体可以是:
通过调用private long progressValue方法定义业务控件变量。其中,业务控件变量为private long型变量,即为私有类型长整型变量。其中,业务控件变量名称为progressValue,即进度条控件变量,该业务控件名称还可以根据研发人员需求进行更改,在此不做限定。其中,定义好业务控件变量后,可以将业务控件变量值初始化为0。在数据共享对象接收到业务控件变量的更新消息时,数据共享对象中的业务控件变量可以根据更新消息进行更新。更新后的业务控件变量可以发送至当前的屏幕状态,且在当前屏幕状态进行横竖屏切换后,切换后的屏幕状态也可以从数据共享对象中获取最新的业务控件变量。通过获取数据共享对象中的业务控件变量,完成了切换前的屏幕状态与切换后的屏幕状态完成了在切换事件发生时的业务控件信息的同步。
可选的,在接收切换指令之前,还包括:
调用预定义的数据共享对象获取方法判断是否可以获取到数据共享对象;若是,则调用返回方法将获取到的数据共享对象进行返回;若否,则调用数据共享对象实例化方法构造数据共享对象,并调用返回方法将构造好的数据共享对象进行返回。
其中,具体可以通过调用Public DataShare getDataShare()方法进行数据共享对象获取方法的定义。其中,数据共享对象获取方法类型为Public共有类型,使得其他类具备该方法的访问权限。其中,数据共享对象获取方法可以返回getDataShare类型数据,且该方法没有入参参数。
其中,若通过数据共享对象获取方法可以获取数据共享对象,则证明数据共享对象已经进行实例化操作,则可以直接将获取到的数据共享对象进行返回,以使对数据共享对象进行相应的处理操作;若通过数据共享对象获取方法没有获取数据共享对象,即mDataShare==null,则证明数据共享对象还没有进行实例化操作,则可以调用实例化方法mDataShare=new DataShare()来进行数据共享对象的构造,并将构造好的数据共享对象进行返回,以使对数据共享对象进行相应的处理操作。其中,返回数据共享对象具体可以通过return mDataShare语句实现。
通过预定义的数据共享对象获取方法,可以判断数据共享对象是否已经实例化,从而避免了重新申请内存空间再次构建数据共享对象,节省了内存空间,且保证了数据共享对象的唯一性。
S130、当接收到业务控件变量的更新消息时,根据更新消息更新数据共享对象中的业务控件变量,并通过引用关系切换后的数据共享协议将更新后的业务控件变量发送至第二屏幕状态,以更新第二屏幕状态的业务控件信息。
其中,在第一屏幕状态切换为第二屏幕状态后,第二屏幕状态首先根据获取的数据共享对象中的业务控件变量进行业务控件信息的设置;并且在后续数据共享对象中业务控件变量进行改变时,还可以通过数据共享协议接收到更新后的业务控件变量,用以更新业务控件信息。
优选的,当第二屏幕状态获取业务控件变量的同时,数据共享对象接收到业务控件变量更新消息,则数据共享对象可以先进行业务控件变量的更新,再将更新后的业务控件变量发送至第二屏幕状态,从而减少了第二屏幕状态的业务控件信息的更新次数,避免了业务控件信息更新异常的情况。
可选的,在接收切换指令之前,还包括:
在数据共享对象中调用协议定义方法定义数据共享协议;在数据共享对象中调用协议的引用关系切换函数的定义方法定义协议的引用关系切换函数,其中协议的引用关系切换函数包括利用this指针获取屏幕切换后的屏幕状态的协议的引用关系切换函数;将数据共享协议复写到第一屏幕状态以及第二屏幕状态中。
其中,协议定义方法具体可以是:
Public interface IonProgressValue{
Public void onProgressValueChanged(long progressValue);
};
其中,数据共享协议名称为IonProgressValue,该协议中定义了一个协议方法onProgressValueChanged,协议方法中有一个long类型的参数信息progressValue,后续通过该参数将数据共享对象mDataShare中的progressValue的信息通知出去。通过定义数据共享协议,可以实现数据共享对象向其引用的对象发送更新后的业务控件变量信息,以使其引用的对象根据该更新信息更新业务控件信息。
其中,协议的引用关系切换函数的定义方法,具体可以是:
Public void changeIonProgressValue(IonProgressValue iProgress);
其中,协议的引用关系切换函数的名称为changeIonProgressValue。该协议中有一个IonProgressValue类型的接口参数iProgress,可以表示数据共享协议所引用的对象,即协议的引用关系。当iProgress发生更改,且不等于null的时候,则协议的引用关系切换函数可以通过IonProgressValue=iProgress的方法,将更改后的iProgress赋值给IonProgressValue,可以理解为将切换后的引用对象赋值给数据共享协议所引用的对象。示例性的,当第一屏幕状态为横屏,第二屏幕状态为竖屏时,根据切换指令将横屏的业务控件切换为竖屏的业务控件,相应的iProgress也会从横屏切换为竖屏,即数据共享协议的引用关系从横屏切换为竖屏,因此数据共享对象中根据更新消息更新后的业务控件变量也会从发送至横屏切换为发送至竖屏;当第一屏幕状态为竖屏,第二屏幕状态为横屏时,根据切换指令将竖屏的业务控件切换为横屏的业务控件,相应的iProgress也会从竖屏切换为横屏,即数据共享协议的引用关系从竖屏切换为横屏,因此数据共享对象中根据更新消息更新后的业务控件变量也会从发送至竖屏切换为发送至横屏。
其中,利用this指针获取屏幕切换后的屏幕状态的协议的引用关系切换函数,具体可以是:
changeIonProgressValue(this);
其中,可以在接收到切换指令后,在第一屏幕的业务控件切换为第二屏幕的业务控件的同时或第一屏幕的业务控件切换为第二屏幕的业务控件之后,调用changeIonProgressValue(this)函数来动态修改数据共享协议IonProgressValue的引用关系。其中,调用changeIonProgressValue函数的时候传递的是this指针,也就是说传递的是第一/二屏幕状态本身(即横/竖屏本身),因此数据共享协议IonProgressValue永远指向当前正在运行的屏幕状态。
通过this指针传递当前正在运行的屏幕状态,实现了在接收到切换指令后无需关注横竖屏状态信息,而直接动态切换数据共享协议IonProgressValue的引用关系为屏幕切换后的屏幕状态。从而实现了更新后的业务控件变量只定向发送给屏幕切换后的屏幕状态,避免了将更新后的业务控件变量发送至所有屏幕状态,减少了系统资源占用。
其中,第二屏幕状态需要继承数据共享协议IonProgressValue,并需要复写其中的协议方法onProgressValueChanged,从而在屏幕切换为第二屏幕状态时,可以实现更新后的业务控件变量的接收。同理,第一屏幕状态需要继承数据共享协议IonProgressValue,并需要复写其中的协议方法onProgressValueChanged,从而在屏幕重新切换为第一屏幕状态时,可以实现更新后的业务控件变量的接收。
可选的,获取数据共享对象中的业务控件变量,包括:
通过预定义的业务控件变量获取方法获取数据共享对象中的业务控件变量。
其中,具体可以通过调用Public long getProgressValue()进行业务控件变量获取方法的定义。其中,业务控件变量获取方法是一个public公有类型的函数,该函数的返回值是一个long类型的数据,在该函数的实现中通过调用returnprogressValue方法可以将私有变量progressValue的值信息返回出来。
可选的,当第一屏幕状态为竖屏时,第二屏幕状态为横屏;当第一屏幕状态为横屏时,第二屏幕状态为竖屏。
也就是说,可以是根据接收的切换指令将竖屏的业务控件切换为横屏的业务控件,将数据共享协议的引用关系切换为横屏;获取数据共享对象中的业务控件变量,并根据业务控件变量设置横屏的业务控件信息;当接收到业务控件变量的更新消息时,根据更新消息更新数据共享对象中的业务控件变量,并通过引用横屏的数据共享协议将更新后的业务控件变量发送至横屏,以更新横屏的业务控件信息。还可以是根据接收的切换指令将横屏的业务控件切换为竖屏的业务控件,将数据共享协议的引用关系切换为竖屏;获取数据共享对象中的业务控件变量,并根据业务控件变量设置竖屏的业务控件信息;当接收到业务控件变量的更新消息时,根据更新消息更新数据共享对象中的业务控件变量,并通过引用竖屏的数据共享协议将更新后的业务控件变量发送至竖屏,以更新竖屏的业务控件信息。
其中,第一屏幕状态和第二屏幕状态的业务控件加载方法,第一屏幕状态和第二屏幕状态的数据共享协议复写方式,以及第一屏幕状态和第二屏幕状态通过业务控件变量方法获取数据共享对象中业务变量,皆可以认为是思路相同的方法或方式,即在第一屏幕状态和第二屏幕状态皆可使用思路相同的方法以实现相同目的的操作。
本实施例提供的Android横竖屏数据同步方法,当第一屏幕状态切换到第二屏幕状态时,将数据共享协议的引用关系切换为第二屏幕状态,即数据共享协议引用屏幕切换后的屏幕状态(即第二屏幕状态);第二屏幕状态可以获取数据共享对象中的业务控件变量,也就是切换时业务控件变量的当前值,并根据获取的业务控件变量设置业务控件信息;当数据共享对象中的业务控件变量根据更新消息进行更新时,通过引用关系切换后的数据共享协议将更新后的业务控件变量发送至第二屏幕状态,以更新第二屏幕状态的业务控件信息。通过设置数据共享对象实现了Android横竖屏切换后当前业务控件信息的同步,提升了数据同步稳定性,避免了数据同步异常的情况;通过切换数据共享协议的引用关系,实现了更新后的业务控件变量只定向发送给屏幕切换后的屏幕状态,避免了将更新后的业务控件变量发送至所有屏幕状态,减少了系统资源占用。
实施例二
图2是本发明实施例二提供的一种Android横竖屏数据同步装置结构示意图,本实施例可适用于Android横竖屏数据同步的情况。
参见图2,本实施例中Android横竖屏数据同步装置,包括:
业务控件切换模块210,用于接收切换指令,根据切换指令将第一屏幕状态的业务控件切换为第二屏幕状态的业务控件,并调用协议的引用关系切换函数将数据共享协议的引用关系切换为第二屏幕状态;
业务控件信息设置模块220,用于获取数据共享对象中的业务控件变量,并根据业务控件变量设置第二屏幕状态的业务控件信息,其中数据共享对象为数据共享器类的静态全局变量对象;
业务控件信息更新模块230,用于当接收到业务控件变量的更新消息时,根据更新消息更新数据共享对象中的业务控件变量,并通过引用关系切换后的数据共享协议将更新后的业务控件变量发送至第二屏幕状态,以更新第二屏幕状态的业务控件信息。
可选的,Android横竖屏数据同步装置,还包括:
业务控件加载模块,用于在第一屏幕状态首次被打开时,在Activity的生命周期函数onCreate函数中调用控件加载方法加载第一屏幕状态的业务控件;还用于在第二屏幕状态首次被打开时,在Activity的生命周期函数onCreate函数中调用控件加载方法加载第二屏幕状态的业务控件。
可选的,Android横竖屏数据同步装置,还包括:
共享器类定义模块,用于调用共享器类定义方法定义数据共享器类;
共享对象定义模块,用于调用数据共享对象定义方法定义数据共享器类的数据共享对象;
业务控件变量定义模块,用于在数据共享对象中调用业务控件变量定义方法定义业务控件变量,并初始化业务控件变量,且当接收到业务控件变量的更新消息时,根据更新消息更新业务控件变量。
可选的,Android横竖屏数据同步装置,还包括:
共享对象获取模块,用于调用预定义的数据共享对象获取方法判断是否可以获取到数据共享对象;若是,则调用返回方法将获取到的数据共享对象进行返回;若否,则调用数据共享对象实例化方法构造数据共享对象,并调用返回方法将构造好的数据共享对象进行返回。
可选的,Android横竖屏数据同步装置,还包括:
数据共享协议定义模块,用于在数据共享对象中调用协议定义方法定义数据共享协议;在数据共享对象中调用协议的引用关系切换函数的定义方法定义协议的引用关系切换函数,其中协议的引用关系切换函数包括利用this指针获取屏幕切换后的屏幕状态的协议的引用关系切换函数;将数据共享协议复写到第一屏幕状态以及第二屏幕状态中。
可选的,业务控件信息设置模块220,具体用于:
通过预定义的业务控件变量获取方法获取数据共享对象中的业务控件变量。
可选的,当第一屏幕状态为竖屏时,第二屏幕状态为横屏;当第一屏幕状态为横屏时,第二屏幕状态为竖屏。
本实施例提供的Android横竖屏数据同步装置,与实施例一提出的Android横竖屏数据同步方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见实施例一,并且本实施例与实施例一具有相同的有益效果。
实施例三
本实施例提供了一种终端,可以用于Android横竖屏数据同步的情况。图3是本发明实施例三提供的一种终端的结构示意图。参见图3,该终端包括:
一个或多个处理器310;
存储器320,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器310执行,使得所述一个或多个处理器310实现如实施例一提出的Android横竖屏数据同步方法。
图3中以一个处理器310为例;处理器310和存储器320可以通过总线或其他方式连接,图3中以通过总线连接为例。
存储器320作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的Android横竖屏数据同步方法对应的程序指令/模块。处理器310通过运行存储在存储器320中的软件程序、指令以及模块,从而执行终端的各种功能应用以及数据处理,即实现上述的Android横竖屏数据同步方法。
存储器320可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器320可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器320可进一步包括相对于处理器310远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本实施例提出的终端与实施例一提出的Android横竖屏数据同步方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见实施例一,并且本实施例与实施例一具有相同的有益效果。
实施例四
本实施例提供一种可读介质,其上存储有计算机程序,该程序被处理器执行时实现如实施例一提出的Android横竖屏数据同步方法。
本实施例提出的可读介质与实施例一提出的Android横竖屏数据同步方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见实施例一,并且本实施例与实施例一具有相同的有益效果。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (9)
1.一种Android横竖屏数据同步方法,其特征在于,包括:
接收切换指令,根据所述切换指令将第一屏幕状态的业务控件切换为第二屏幕状态的业务控件,并调用协议的引用关系切换函数将数据共享协议的引用关系切换为第二屏幕状态;
获取数据共享对象中的业务控件变量,并根据所述业务控件变量设置第二屏幕状态的业务控件信息,其中所述数据共享对象为数据共享器类的静态全局变量对象;
当接收到业务控件变量的更新消息时,根据所述更新消息更新数据共享对象中的业务控件变量,并通过引用关系切换后的数据共享协议将更新后的业务控件变量发送至第二屏幕状态,以更新第二屏幕状态的业务控件信息;
其中,在所述接收切换指令之前,包括:
调用共享器类定义方法定义数据共享器类;
调用数据共享对象定义方法定义数据共享器类的数据共享对象;
在数据共享对象中调用业务控件变量定义方法定义业务控件变量,并初始化业务控件变量,且当接收到业务控件变量的更新消息时,根据所述更新消息更新业务控件变量。
2.根据权利要求1所述的方法,其特征在于,在所述接收切换指令之前,还包括:
在第一屏幕状态首次被打开时,在Activity的生命周期函数onCreate函数中调用控件加载方法加载第一屏幕状态的业务控件;
在第二屏幕状态首次被打开时,在Activity的生命周期函数onCreate函数中调用控件加载方法加载第二屏幕状态的业务控件。
3.根据权利要求1所述的方法,其特征在于,在所述接收切换指令之前,还包括:
调用预定义的数据共享对象获取方法判断是否可以获取到数据共享对象;
若是,则调用返回方法将获取到的数据共享对象进行返回;
若否,则调用数据共享对象实例化方法构造数据共享对象,并调用返回方法将构造好的数据共享对象进行返回。
4.根据权利要求1所述的方法,其特征在于,在所述接收切换指令之前,还包括:
在数据共享对象中调用协议定义方法定义数据共享协议;
在数据共享对象中调用协议的引用关系切换函数的定义方法定义协议的引用关系切换函数,其中协议的引用关系切换函数包括利用this指针获取屏幕切换后的屏幕状态的协议的引用关系切换函数;
将所述数据共享协议复写到第一屏幕状态以及第二屏幕状态中。
5.根据权利要求1所述的方法,其特征在于,所述获取数据共享对象中的业务控件变量,包括:
通过预定义的业务控件变量获取方法获取数据共享对象中的业务控件变量。
6.根据权利要求1-5任一所述的方法,其特征在于,当所述第一屏幕状态为竖屏时,所述第二屏幕状态为横屏;当所述第一屏幕状态为横屏时,所述第二屏幕状态为竖屏。
7.一种Android横竖屏数据同步装置,其特征在于,包括:
业务控件切换模块,用于接收切换指令,根据所述切换指令将第一屏幕状态的业务控件切换为第二屏幕状态的业务控件,并调用协议的引用关系切换函数将数据共享协议的引用关系切换为第二屏幕状态;
业务控件信息设置模块,用于获取数据共享对象中的业务控件变量,并根据所述业务控件变量设置第二屏幕状态的业务控件信息,其中所述数据共享对象为数据共享器类的静态全局变量对象;
业务控件信息更新模块,用于当接收到业务控件变量的更新消息时,根据所述更新消息更新数据共享对象中的业务控件变量,并通过引用关系切换后的数据共享协议将更新后的业务控件变量发送至第二屏幕状态,以更新第二屏幕状态的业务控件信息;
其中,在所述接收切换指令之前,包括:
调用共享器类定义方法定义数据共享器类;
调用数据共享对象定义方法定义数据共享器类的数据共享对象;
在数据共享对象中调用业务控件变量定义方法定义业务控件变量,并初始化业务控件变量,且当接收到业务控件变量的更新消息时,根据所述更新消息更新业务控件变量。
8.一种终端,其特征在于,所述终端包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的Android横竖屏数据同步方法。
9.一种可读介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的Android横竖屏数据同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810890199.8A CN109189498B (zh) | 2018-08-07 | 2018-08-07 | Android横竖屏数据同步方法、装置、终端及可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810890199.8A CN109189498B (zh) | 2018-08-07 | 2018-08-07 | Android横竖屏数据同步方法、装置、终端及可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109189498A CN109189498A (zh) | 2019-01-11 |
CN109189498B true CN109189498B (zh) | 2021-09-07 |
Family
ID=64920850
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810890199.8A Active CN109189498B (zh) | 2018-08-07 | 2018-08-07 | Android横竖屏数据同步方法、装置、终端及可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109189498B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113467878A (zh) * | 2021-07-15 | 2021-10-01 | 掌阅科技股份有限公司 | 页面横竖屏展示方法、电子设备及存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101834938A (zh) * | 2010-03-25 | 2010-09-15 | 中兴通讯股份有限公司 | 一种实现移动终端横竖屏切换的装置及方法 |
CN104581405B (zh) * | 2013-10-21 | 2018-09-04 | 中国移动通信集团公司 | 一种显示内容处理方法及设备 |
WO2015123891A1 (zh) * | 2014-02-24 | 2015-08-27 | 华为技术有限公司 | 多页面管理方法和装置 |
CN105354014B (zh) * | 2014-08-18 | 2018-10-23 | 阿里巴巴集团控股有限公司 | 应用界面渲染展示方法及装置 |
US20160299581A1 (en) * | 2015-04-11 | 2016-10-13 | Jari Kristensen | Navigation by changing screen orientation |
CN106844251B (zh) * | 2015-12-03 | 2022-03-22 | 中兴通讯股份有限公司 | 数据传输方法及装置 |
CN105528257B (zh) * | 2016-01-08 | 2021-01-05 | 腾讯科技(深圳)有限公司 | 一种单进程数据处理方法及装置 |
US10579238B2 (en) * | 2016-05-13 | 2020-03-03 | Sap Se | Flexible screen layout across multiple platforms |
CN106569880B (zh) * | 2016-11-07 | 2020-12-22 | Tcl科技集团股份有限公司 | 一种Android应用间动态共享资源的方法及系统 |
CN107391119B (zh) * | 2017-06-30 | 2020-05-12 | 武汉斗鱼网络科技有限公司 | 一种横竖屏实现方法及装置 |
-
2018
- 2018-08-07 CN CN201810890199.8A patent/CN109189498B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109189498A (zh) | 2019-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109213462B (zh) | Android横竖屏数据同步方法、装置、终端及可读介质 | |
WO2022062650A1 (zh) | 基于kubernetes的计算设备共享方法、装置、设备及存储介质 | |
CN110377431B (zh) | 多注册中心场景下服务调用方法及装置 | |
CN106469071B (zh) | 应用程序主题更换方法及装置 | |
CN114448895B (zh) | 一种应用访问方法、装置、设备及介质 | |
CN109033393B (zh) | 贴纸处理方法、装置、存储介质及电子设备 | |
CN109144638B (zh) | Android横竖屏数据同步方法、装置、终端及可读介质 | |
CN110928397B (zh) | 用户界面刷新方法、装置、存储介质及电子装置 | |
CN109189498B (zh) | Android横竖屏数据同步方法、装置、终端及可读介质 | |
CN109067562A (zh) | 基于智能指针的动态配置更新方法及系统、服务器及介质 | |
CN114138908A (zh) | 数据同步方法、装置、终端及存储介质 | |
CN113238756B (zh) | 直播业务处理方法、装置、电子设备及存储介质 | |
CN111078348A (zh) | 一种界面管理方法、装置、设备和存储介质 | |
CN114222003A (zh) | 服务调用方法、系统、装置、设备及存储介质 | |
CN109165067B (zh) | Android横竖屏数据同步方法、装置、终端及可读介质 | |
CN112044061B (zh) | 游戏画面处理方法、装置、电子设备以及存储介质 | |
CN111124536A (zh) | 基于数据隔离的双系统的数据共享方法和装置、终端设备 | |
CN107301089B (zh) | 一种app部署及调用方法和终端 | |
CN109684009B (zh) | 基于协议的倒计时同步方法、装置、存储介质和设备 | |
CN110311935A (zh) | 一种分享方法、分享部署系统和客户端 | |
CN110324722B (zh) | 直播间中数据的获取方法、装置、设备和存储介质 | |
CN110661857B (zh) | 一种数据同步方法和装置 | |
CN114143328A (zh) | 一种云手机的数据迁移方法、装置、设备和介质 | |
CN109062620B (zh) | Android帧动画执行方法、装置、终端及可读介质 | |
CN111597021A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |