Android横竖屏数据同步方法、装置、终端及可读介质与流程

文档序号:16530159发布日期:2019-01-05 10:41阅读:168来源:国知局
Android横竖屏数据同步方法、装置、终端及可读介质与流程

本发明实施例涉及计算机技术,尤其涉及一种android横竖屏数据同步方法、装置、终端及可读介质。



背景技术:

通常android终端横竖屏切换方法为,完全关闭横/竖屏后再加载竖/横屏,即横屏和竖屏间的业务逻辑是完全分离的。若要完成横屏与竖屏切换时的数据同步,需要在将横/竖屏关闭前将横/竖屏中所有业务状态信息进行复制,复制的业务状态信息用于竖/横屏加载时实现数据同步。若实现多次横屏与竖屏切换,则需要多次复制横/竖屏中所有业务状态信息,容易导致业务功能紊乱,且可能出现数据同步异常的情况。



技术实现要素:

有鉴于此,本发明实施例提供了一种android横竖屏数据同步方法、装置、终端及可读介质,实现了android横竖屏数据同步,提升了数据同步稳定性,避免了数据同步异常的情况。

第一方面,本发明实施例提供了一种android横竖屏数据同步方法,包括:

接收切换指令,根据所述切换指令将第一屏幕状态的业务控件切换为第二屏幕状态的业务控件;

获取数据共享对象中的业务控件变量,并根据所述业务控件变量设置第二屏幕状态的业务控件信息,其中所述数据共享对象为数据共享器类的静态全局变量对象;

当接收到业务控件变量的更新消息时,根据所述更新消息更新数据共享对象中的业务控件变量,并通过数据共享协议将更新后的业务控件变量发送至第二屏幕状态,以更新第二屏幕状态的业务控件信息。

可选的,在所述接收切换指令之前,还包括:

在第一屏幕状态首次被打开时,在activity的生命周期函数oncreate函数中调用控件加载方法加载第一屏幕状态的业务控件;

在第二屏幕状态首次被打开时,在activity的生命周期函数oncreate函数中调用控件加载方法加载第二屏幕状态的业务控件。

可选的,在所述接收切换指令之前,还包括:

调用共享器类定义方法定义数据共享器类;

调用数据共享对象定义方法定义数据共享器类的数据共享对象;

在数据共享对象中调用业务控件变量定义方法定义业务控件变量,并初始化业务控件变量,且当接收到业务控件变量的更新消息时,根据所述更新消息更新业务控件变量。

可选的,在所述接收切换指令之前,还包括:

调用预定义的数据共享对象获取方法判断是否可以获取到数据共享对象;

若是,则调用返回方法将获取到的数据共享对象进行返回;

若否,则调用数据共享对象实例化方法构造数据共享对象,并调用返回方法将构造好的数据共享对象进行返回。

可选的,在所述接收切换指令之前,还包括:

在数据共享对象中调用协议定义方法定义数据共享协议,并将所述数据共享协议复写到第二屏幕状态中。

可选的,所述获取数据共享对象中的业务控件变量,包括:

通过预定义的业务控件变量获取方法获取数据共享对象中的业务控件变量。

可选的,当所述第一屏幕状态为竖屏时,所述第二屏幕状态为横屏;当所述第一屏幕状态为横屏时,所述第二屏幕状态为竖屏。

第二方面,本发明实施例提供了一种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函数中调用控件加载方法加载进度条控件,具体可以是:

progressbarprogressbar=(progressbar)findviewbyid(r.id.progress);

其中,findviewbyid可以理解为进度条业务控件是根据id进行加载的;r.id.progress可以理解为预定义的进度条id信息;其中,在根据控件加载方法加载后,可以得到一个progressbar类型的progressbar对象信息;其中,progressbar类型也可以是预先定义的类。

其中,若首次打开的为第一屏幕状态,则首先加载第一屏幕状态的业务控件,当首次从第一屏幕状态切换为第二屏幕状态时,则加载第二屏幕状态的业务控件;若首次打开的为第二屏幕状态,则首先加载第二屏幕状态的业务控件,当首次从第二屏幕状态切换为第一屏幕状态时,则加载第一屏幕状态的业务控件。其中,当第一/二屏幕状态首次加载业务控件后,存储于终端内存中,等再次切换到第一/二屏幕状态时,无需重复加载业务控件。

通过预先加载第一/二屏幕状态的业务控件,可以使横竖屏数据同步更加便捷,在同步过程中无需复制第一/二屏幕状态下所有数据信息,提升了数据同步稳定性,避免了数据同步异常的情况。

s120、获取数据共享对象中的业务控件变量,并根据业务控件变量设置第二屏幕状态的业务控件信息,其中数据共享对象为数据共享器类的静态全局变量对象。

其中,数据共享器类可以预先定义,在定义好数据共享器类后,可以创建数据共享器类对象,即数据共享对象。其中,可以在数据共享对象中定义业务控件变量,可以理解为一个数据共享对象对应一个业务控件,在一个数据共享对象中可以存储对应业务控件的业务控件数据。其中,数据共享对象为静态全局变量对象,可以理解为任意函数获取该数据共享对象时,皆可以获取到同一个数据共享对象。因此,从第一屏幕状态切换为第二屏幕状态时第二屏幕获取的数据共享对象,与后续第二屏幕状态切换回第一屏幕状态时第一屏幕状态获取的数据共享对象是相同的对象。

可选的,在接收切换指令之前,还包括:

调用共享器类定义方法定义数据共享器类;调用数据共享对象定义方法定义数据共享器类的数据共享对象;在数据共享对象中调用业务控件变量定义方法定义业务控件变量,并初始化业务控件变量,且当接收到业务控件变量的更新消息时,根据更新消息更新业务控件变量。

其中,调用共享器类定义方法定义数据共享器类,具体可以是:

通过调用publicclassdatashare{}方法定义数据共享器类。其中,数据共享器类为public共有类型,使得其他类具备该数据共享类的访问权限。其中,数据共享器类的类名是datashare,该共享器类的类名可以根据研发人员需求进行更改,在此不做限定。

其中,调用数据共享对象定义方法定义数据共享器类的数据共享对象,具体可以是:

通过调用publicstaticdatasharemdatashare()方法定义数据共享对象。其中,数据共享器对象为public共有类型,使得其他对象具备该数据共享对象的访问权限。其中,数据共享对象为static静态类型的,可以使得横竖屏切换后的屏幕状态皆获取同一个数据共享对象。其中,数据共享对象为数据共享器类datashare的对象,名称为mdatashare,该共享器对象的名称可以根据研发人员需求进行更改,在此不做限定。

其中,在数据共享对象中调用业务控件变量定义方法定义业务控件变量,具体可以是:

通过调用privatelongprogressvalue方法定义业务控件变量。其中,业务控件变量为privatelong型变量,即为私有类型长整型变量。其中,业务控件变量名称为progressvalue,即进度条控件变量,该业务控件名称还可以根据研发人员需求进行更改,在此不做限定。其中,定义好业务控件变量后,可以将业务控件变量值初始化为0。在数据共享对象接收到业务控件变量的更新消息时,数据共享对象中的业务控件变量可以根据更新消息进行更新。更新后的业务控件变量可以发送至当前的屏幕状态,且在当前屏幕状态进行横竖屏切换后,切换后的屏幕状态也可以从数据共享对象中获取最新的业务控件变量。

通过获取数据共享对象中的业务控件变量,完成了切换前的屏幕状态与切换后的屏幕状态完成了在切换事件发生时的业务控件信息的同步。

可选的,在接收切换指令之前,还包括:

调用预定义的数据共享对象获取方法判断是否可以获取到数据共享对象;若是,则调用返回方法将获取到的数据共享对象进行返回;若否,则调用数据共享对象实例化方法构造数据共享对象,并调用返回方法将构造好的数据共享对象进行返回。

其中,具体可以通过调用publicdatasharegetdatashare()方法进行数据共享对象获取方法的定义。其中,数据共享对象获取方法类型为public共有类型,使得其他类具备该方法的访问权限。其中,数据共享对象获取方法可以返回getdatashare类型数据,且该方法没有入参参数。

其中,若通过数据共享对象获取方法可以获取数据共享对象,则证明数据共享对象已经进行实例化操作,则可以直接将获取到的数据共享对象进行返回,以使对数据共享对象进行相应的处理操作;若通过数据共享对象获取方法没有获取数据共享对象,即mdatashare==null,则证明数据共享对象还没有进行实例化操作,则可以调用实例化方法mdatashare=newdatashare()来进行数据共享对象的构造,并将构造好的数据共享对象进行返回,以使对数据共享对象进行相应的处理操作。其中,返回数据共享对象具体可以通过returnmdatashare语句实现。

通过预定义的数据共享对象获取方法,可以判断数据共享对象是否已经实例化,从而避免了重新申请内存空间再次构建数据共享对象,节省了内存空间,且保证了数据共享对象的唯一性。

s130、当接收到业务控件变量的更新消息时,根据更新消息更新数据共享对象中的业务控件变量,并通过数据共享协议将更新后的业务控件变量发送至第二屏幕状态,以更新第二屏幕状态的业务控件信息。

其中,在第一屏幕状态切换为第二屏幕状态后,第二屏幕状态首先根据获取的数据共享对象中的业务控件变量进行业务控件信息的设置;并且在后续数据共享对象中业务控件变量进行改变时,还可以通过数据共享协议接收到更新后的业务控件变量,用以更新业务控件信息。

优选的,当第二屏幕状态获取业务控件变量的同时,数据共享对象接收到业务控件变量更新消息,则数据共享对象可以先进行业务控件变量的更新,再将更新后的业务控件变量发送至第二屏幕状态,从而减少了第二屏幕状态的业务控件信息的更新次数,避免了业务控件信息更新异常的情况。

可选的,在接收切换指令之前,还包括:

在数据共享对象中调用协议定义方法定义数据共享协议,并将数据共享协议复写到第二屏幕状态中。

其中,协议定义方法具体可以是:

publicinterfaceionprogressvalue{

publicvoidonprogressvaluechanged(longprogressvalue);

};

其中,数据共享协议名称为ionprogressvalue,该协议中定义了一个协议方法onprogressvaluechanged,协议方法中有一个long类型的参数信息progressvalue,后续通过该参数将数据共享对象mdatashare中的progressvalue的信息通知出去。其中,第二屏幕状态若要实现ionprogressvalue协议,接收更新后的业务控件变量,则需要复写其中的协议方法onprogressvaluechanged。第一屏幕状态若要实现ionprogressvalue协议,接收更新后的业务控件变量,也需要复写其中的协议方法onprogressvaluechanged。

通过定义数据共享协议,可以实现数据共享对象向第二屏幕状态发送更新后的业务控件变量信息,以使第二屏幕状态根据该更新信息更新业务控件信息。同理,当第二屏幕状态切换为第一屏幕状态时,也可以通过数据共享协议实现数据共享对象向第一屏幕状态发送更新后的业务控件变量信息。

可选的,获取数据共享对象中的业务控件变量,包括:

通过预定义的业务控件变量获取方法获取数据共享对象中的业务控件变量。

其中,具体可以通过调用publiclonggetprogressvalue()进行业务控件变量获取方法的定义。其中,业务控件变量获取方法是一个public公有类型的函数,该函数的返回值是一个long类型的数据,在该函数的实现中通过调用returnprogressvalue方法可以将私有变量progressvalue的值信息返回出来。

可选的,当第一屏幕状态为竖屏时,第二屏幕状态为横屏;当第一屏幕状态为横屏时,第二屏幕状态为竖屏。

也就是说,可以是根据接收的切换指令将竖屏的业务控件切换为横屏的业务控件;获取数据共享对象中的业务控件变量,并根据业务控件变量设置横屏的业务控件信息;当接收到业务控件变量的更新消息时,根据更新消息更新数据共享对象中的业务控件变量,并通过数据共享协议将更新后的业务控件变量发送至横屏,以更新横屏的业务控件信息。还可以是根据接收的切换指令将横屏的业务控件切换为竖屏的业务控件;获取数据共享对象中的业务控件变量,并根据业务控件变量设置竖屏的业务控件信息;当接收到业务控件变量的更新消息时,根据更新消息更新数据共享对象中的业务控件变量,并通过数据共享协议将更新后的业务控件变量发送至竖屏,以更新竖屏的业务控件信息。

其中,第一屏幕状态和第二屏幕状态的业务控件加载方法,第一屏幕状态和第二屏幕状态的数据共享协议复写方式,以及第一屏幕状态和第二屏幕状态通过业务控件变量方法获取数据共享对象中业务变量,皆可以认为是思路相同的方法或方式,即在第一屏幕状态和第二屏幕状态皆可使用思路相同的方法以实现相同目的的操作。

本实施例提供的android横竖屏数据同步方法,当第一屏幕状态切换到第二屏幕状态时,第二屏幕状态可以获取数据共享对象中的业务控件变量,也就是切换时业务控件变量的当前值,并根据获取的业务控件变量设置业务控件信息;并且,当数据共享对象中的业务控件变量根据更新消息进行更新时,可以通过数据共享协议将更新后的业务控件变量发送至第二屏幕状态,以更新第二屏幕状态的业务控件信息。即通过设置数据共享对象实现了android横竖屏切换后当前业务控件信息的同步,提升了数据同步稳定性,避免了数据同步异常的情况。

实施例二

图2是本发明实施例二提供的一种android横竖屏数据同步装置结构示意图,本实施例可适用于android横竖屏数据同步的情况。

参见图2,本实施例中android横竖屏数据同步装置,包括:

业务控件切换模块210,用于接收切换指令,根据切换指令将第一屏幕状态的业务控件切换为第二屏幕状态的业务控件;

业务控件信息设置模块220,用于获取数据共享对象中的业务控件变量,并根据业务控件变量设置第二屏幕状态的业务控件信息,其中数据共享对象为数据共享器类的静态全局变量对象;

业务控件信息更新模块230,用于当接收到业务控件变量的更新消息时,根据更新消息更新数据共享对象中的业务控件变量,并通过数据共享协议将更新后的业务控件变量发送至第二屏幕状态,以更新第二屏幕状态的业务控件信息。

可选的,android横竖屏数据同步装置,还包括:

业务控件加载模块,用于在第一屏幕状态首次被打开时,在activity的生命周期函数oncreate函数中调用控件加载方法加载第一屏幕状态的业务控件;还用于在第二屏幕状态首次被打开时,在activity的生命周期函数oncreate函数中调用控件加载方法加载第二屏幕状态的业务控件。

可选的,android横竖屏数据同步装置,还包括:

共享器类定义模块,用于调用共享器类定义方法定义数据共享器类;

共享对象定义模块,用于调用数据共享对象定义方法定义数据共享器类的数据共享对象;

业务控件变量定义模块,用于在数据共享对象中调用业务控件变量定义方法定义业务控件变量,并初始化业务控件变量,且当接收到业务控件变量的更新消息时,根据更新消息更新业务控件变量。

可选的,android横竖屏数据同步装置,还包括:

共享对象获取模块,用于调用预定义的数据共享对象获取方法判断是否可以获取到数据共享对象;若是,则调用返回方法将获取到的数据共享对象进行返回;若否,则调用数据共享对象实例化方法构造数据共享对象,并调用返回方法将构造好的数据共享对象进行返回。

可选的,android横竖屏数据同步装置,还包括:

共享协议定义模块,用于在数据共享对象中调用协议定义方法定义数据共享协议,并将数据共享协议复写到第二屏幕状态中。

可选的,业务控件信息设置模块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-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1