屏幕方向设置方法、装置、存储介质及终端转让专利

申请号 : CN201810444124.7

文献号 : CN108647057B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 韩世广陈岩

申请人 : 上海瑾盛通信科技有限公司

摘要 :

本申请实施例公开了屏幕方向设置方法、装置、存储介质及终端。该方法包括:接收到应用程序发出的针对屏幕方向的设置申请;判断所述应用程序是否为预加载应用程序;若是,则禁止根据所述设置申请更新系统屏幕方向。本申请实施例通过采用上述技术方案,可以在应用程序的预加载过程中合理控制系统屏幕方向的设置操作,防止预加载应用发出的针对屏幕方向的设置申请对当前的系统屏幕方向产生干扰,保证系统显示的稳定性。

权利要求 :

1.一种屏幕方向设置方法,其特征在于,包括:

接收到应用程序发出的针对屏幕方向的设置申请,所述应用程序包括预加载应用程序和前台应用程序;

判断所述应用程序是否为预加载应用程序;

若是,则禁止根据所述设置申请更新系统屏幕方向;

若否,则确定所述应用程序为前台应用程序;

根据所述设置申请更新系统屏幕方向,并根据更新后的系统屏幕方向确定是否控制屏幕进行旋转操作。

2.根据权利要求1所述的方法,其特征在于,所述若是,则禁止根据所述设置申请更新系统屏幕方向,包括:若是,则确定所述设置申请的申请方式;

若为静态方式,则跳过所述设置申请,以禁止根据所述设置申请更新系统屏幕方向;

若为动态方式,则根据所述设置申请为所述应用程序设置应用方向,并禁止根据所述设置申请更新系统屏幕方向。

3.根据权利要求2所述的方法,其特征在于,

所述静态方式包括:在应用程序对应的预设配置文件中增加屏幕方向属性;

所述动态方式包括:通过应用程序对应的预设函数设置屏幕方向。

4.根据权利要求3所述的方法,其特征在于,操作系统包括安卓操作系统;

所述静态方式包括:在应用程序对应的AndroidManifest.xml文件中的指定的activity中增加android:screenOrientation的属性;

所述动态方式包括:通过应用程序对应的函数setRequestedOrientation()设置屏幕方向。

5.根据权利要求1所述的方法,其特征在于,所述预加载应用程序包括基于预先创建的预加载活动窗口堆栈进行预加载的应用程序,所述预加载活动窗口堆栈对应的边界坐标位于显示屏幕的坐标范围之外。

6.根据权利要求5所述的方法,其特征在于,所述判断所述应用程序是否为预加载应用程序,包括:获取所述应用程序所处的活动窗口堆栈的身份标识;

判断所述身份标识是否为预加载身份;

若是,则确定所述应用程序为预加载应用程序。

7.根据权利要求5所述的方法,其特征在于,还包括:在接收到预加载应用程序的运行指令时,根据所述预加载应用程序曾经发出或再次发出的针对屏幕方向的设置申请更新系统屏幕方向,并将预加载活动窗口堆栈中包含的所述预加载应用程序对应的应用界面迁移至显示屏幕进行显示。

8.一种屏幕方向设置装置,其特征在于,包括:

设置申请接收模块,用于接收应用程序发出的针对屏幕方向的设置申请,所述应用程序包括预加载应用程序和前台应用程序;

判断模块,用于在所述设置申请接收模块接收到应用程序发出的针对屏幕方向的设置申请时,判断所述应用程序是否为预加载应用程序;

屏幕方向更新模块,用于在所述判断模块的判断结果为是时,禁止根据所述设置申请更新系统屏幕方向;

所述屏幕方向更新模块还用于:在所述判断模块的判断结果为否时,确定所述应用程序为前台应用程序;根据所述设置申请更新系统屏幕方向,并根据更新后的系统屏幕方向确定是否控制屏幕进行旋转操作。

9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的屏幕方向设置方法。

10.一种终端,其特征在于,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-7任一所述的屏幕方向设置方法。

说明书 :

屏幕方向设置方法、装置、存储介质及终端

技术领域

[0001] 本申请实施例涉及应用程序加载技术领域,尤其涉及屏幕方向设置方法、装置、存储介质及终端。

背景技术

[0002] 目前,诸如智能手机、平板电脑、笔记本电脑以及智能家电等终端已成为人们日常生活中必不可少的电子设备。随着终端设备不断地智能化,多数终端设备中都装载有操作系统,使得终端设备能够安装丰富多样的应用程序,满足用户不同的需求。
[0003] 随着终端设备的配置不断提升,多数终端设备中可以安装几十甚至上百个应用程序,而随着应用程序的功能日益丰富,应用程序运行时所需加载的资源也越来越多。当用户选择启动一个应用程序时,终端会对该应用程序启动所需的资源进行加载,待加载完毕后,进入应用程序的初始界面,整个过程通常要花费数秒甚至十几秒的时间,导致应用程序的启动效率较低,亟需改进。

发明内容

[0004] 本申请实施例提供一种屏幕方向设置方法、装置、存储介质及终端,可以在应用程序预加载过程中合理设置屏幕方向。
[0005] 第一方面,本申请实施例提供了一种屏幕方向设置方法,包括:
[0006] 接收到应用程序发出的针对屏幕方向的设置申请;
[0007] 判断所述应用程序是否为预加载应用程序;
[0008] 若是,则禁止根据所述设置申请更新系统屏幕方向。
[0009] 第二方面,本申请实施例提供了一种屏幕方向设置装置,包括:
[0010] 设置申请接收模块,用于接收应用程序发出的针对屏幕方向的设置申请;
[0011] 判断模块,用于在所述设置申请接收模块接收到应用程序发出的针对屏幕方向的设置申请时,判断所述应用程序是否为预加载应用程序;
[0012] 屏幕方向更新模块,用于在所述判断模块的判断结果为是时,禁止根据所述设置申请更新系统屏幕方向。
[0013] 第三方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请实施例所述的屏幕方向设置方法。
[0014] 第四方面,本申请实施例提供了一种终端,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,所述处理器执行所述计算机程序时实现如本申请实施例所述的屏幕方向设置方法。
[0015] 本申请实施例中提供的屏幕方向设置方案,接收到应用程序发出的针对屏幕方向的设置申请,判断发出该设置申请的应用程序是否为预加载应用程序,若是,则禁止根据设置申请更新系统屏幕方向。通过采用上述技术方案,可以在应用程序的预加载过程中合理控制系统屏幕方向的设置操作,防止预加载应用发出的针对屏幕方向的设置申请对当前的系统屏幕方向产生干扰,保证系统显示的稳定性。

附图说明

[0016] 图1为本申请实施例提供的一种屏幕方向设置方法的流程示意图;
[0017] 图2为本申请实施例提供的一种预加载活动窗口堆栈与显示屏幕显示区域的相对位置关系示意图;
[0018] 图3为本申请实施例提供的又一种预加载活动窗口堆栈与显示屏幕显示区域的相对位置关系示意图;
[0019] 图4为本申请实施例提供的另一种屏幕方向设置方法的流程示意图;
[0020] 图5为本申请实施例提供的一种针对静态方式的屏幕方向设置流程对比示意图;
[0021] 图6为本申请实施例提供的一种针对动态方式的屏幕方向设置流程对比示意图;
[0022] 图7为本申请实施例提供的又一种屏幕方向设置方法的流程示意图;
[0023] 图8为本申请实施例提供的一种屏幕方向设置装置的结构框图;
[0024] 图9为本申请实施例提供的一种终端的结构示意图;
[0025] 图10为本申请实施例提供的另一种终端的结构示意图。

具体实施方式

[0026] 下面结合附图并通过具体实施方式来进一步说明本申请的技术方案。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。
[0027] 在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
[0028] 图1为本申请实施例提供的一种屏幕方向设置方法的流程示意图,该方法可以由屏幕方向设置装置执行,其中该装置可由软件和/或硬件实现,一般可集成在终端中。如图1所示,该方法包括:
[0029] 步骤101、接收到应用程序发出的针对屏幕方向的设置申请。
[0030] 示例性的,本申请实施例中的终端可包括手机、平板电脑、笔记本电脑以及智能家电等终端设备。终端中装载有操作系统。
[0031] 对于一些终端来说,尤其是手机及平板电脑等移动终端,为了方便用户的使用,显示屏幕的显示方式通常包括竖屏显示和横屏显示,许多应用程序默认采用竖屏方式进行显示,而有些应用程序默认采用横屏方式进行显示(如一些网络游戏等),在终端的使用过程中,有些应用程序还会随着用户握持终端的方向而进行横竖屏显示的切换等。
[0032] 一般的,在应用程序启动时,需要发出针对屏幕方向的设置申请,使得系统能够满足应用程序对屏幕方向的个性化需求,如包括让应用程序能够按照自己的屏幕方向需求进行应用界面的绘制以及显示,还可包括系统控制显示屏幕是否发生旋转(横竖屏切换)以配合应用界面的显示。
[0033] 本申请实施例中,针对应用程序预加载过程中的屏幕方向控制进行优化。此处先对应用程序的预加载进行介绍。当用户选择启动一个应用程序时,终端会对该应用程序启动所需的资源进行加载,待加载完毕后,进入应用程序的初始界面,整个过程通常要花费数秒甚至十几秒的时间,导致应用程序的启动效率较低,因此,可采用预加载的方式来解决该问题,在确定了待预加载的应用程序后,提前准备该应用程序启动时所需的资源,当该应用程序真正启动时,可以有效缩短启动时间,提高启动效率。
[0034] 示例性的,可以在检测到应用预加载事件被触发后,确定待预加载的目标应用程序。应用预加载事件的触发条件可以根据实际情况设置,本申请实施例不作具体限定。例如,可以在检测到用户的动作满足预设条件(如拿起终端、输入屏幕解锁操作或输入终端解锁操作等)时,触发应用预加载事件;或者可以在检测到前台应用程序发生变更时,触发应用预加载事件;或者可以在预加载应用的预测流程结束后,立即(或经过预设时长后)触发应用预加载事件;或者可以定时间隔触发等等。当应用预加载事件被触发后,系统可以通过读取标志位或接收触发指令等方式检测到应用预加载事件已被触发,具体的检测方式本申请实施例也不做限定。
[0035] 待预加载的应用程序可以理解为用户可能即将打开的应用程序,可以是预先设置好的固定的应用程序,也可以是采用一定的方式预测出来的应用程序等。待预加载的应用程序可以包括一个或多个。目标应用程序可以理解为当前需要进行预加载操作的待预加载的应用程序。目标应用程序也可以包括一个或多个。当待预加载的应用程序仅有一个时,目标应用程序相应的也仅有一个;当待预加载的应用程序有多个时,目标应用程序可以为一个(即将多个待预加载的应用程序逐一确定为目标应用程序,并依次进行预加载操作),也可以为多个(即将2个以上待预加载的应用程序确定为目标应用程序,并同时进行预加载操作,也就是说多个目标应用程序的预加载过程可以是并行进行的)。
[0036] 可选的,可采用预测模型对待预加载的应用程序进行预测。该预测模型可以是机器学习模型,所采用的算法可以包括循环神经网络(Recurrent neural networks,RNN)、长短期记忆(Long Short-Term Memory,LSTM)网络、门限循环单元、简单循环单元、自动编码器、决策树、随机森林、特征均值分类、分类回归树、隐马尔科夫、K最近邻(k-NearestNeighbor,KNN)算法、逻辑回归模型、贝叶斯模型、高斯模型以及KL散度(Kullback–Leibler divergence)等等。
[0037] 可选的,可在用户使用终端的过程中,采集训练样本,采用训练样本对预设初始模型进行训练,最终得到用于预测待预加载的应用程序的预测模型。示例性的,训练样本中包含的元素可包括应用程序被打开的时间序列或次序序列;可包括应用程序被打开的时间、地点以及频次等;可包括终端的运行状态,如移动数据网络的开关状态、无线热点的连接状态、所连接的无线热点的身份信息、当前运行的应用程序、上一个前景应用程序、当前应用程序在后台停留的时长、当前应用程序最近一次被切换至后台的时间、耳机插孔的插拔状态、充电状态、电池电量信息以及屏幕显示时长等等;还可包括终端中集成的传感器采集到的数据,如运动传感器、光线传感器、温度传感器以及湿度传感器等等。
[0038] 示例性的,可根据所选用的机器学习模型选择合适的样本元素,也可根据所选的样本元素确定所选用的机器学习模型,还可结合对预测准确度以及预设速度等方面的需求进行模型及样本元素的选择等,本申请实施例不做限定。
[0039] 本申请实施例中,确定待预加载的目标应用程序可以包括根据预测模型之前的输出结果确定待预加载的目标应用程序,也可以包括利用预测模型进行预测,将预测模型的当前输出结果确定待预加载的目标应用程序。
[0040] 在应用程序的预加载过程中,可能会提前发出针对屏幕方向的设置申请,以便系统提前做好相应的准备,因此,在接收到应用程序发出的针对屏幕方向的设置申请时,该应用程序可能是当前在前台真正启动的(如被用户打开的)应用程序,也可能是正在进行预加载的应用程序。
[0041] 步骤102、判断所述应用程序是否为预加载应用程序。
[0042] 当显示屏幕(即主屏幕)处于竖屏状态时,若启动横屏应用程序会导致显示屏幕从竖屏状态切换至横屏状态;同理,当显示屏幕处于横屏状态时,若启动竖屏应用程序会导致显示屏幕从横屏状态切换至竖屏状态。其中,横屏应用程序可理解为申请将屏幕方向设置为横屏的应用程序;竖屏应用程序可理解为申请将屏幕方向设置为竖屏的应用程序。如前文所述,在接收到应用程序发出的针对屏幕方向的设置申请时,该应用程序可能是前台应用程序,也可能是预加载应用程序。若不对前台应用程序和预加载应用程序进行区分,那么当预加载应用程序申请的屏幕方向与显示屏当前的屏幕方向不一致时,就会发生屏幕方向的切换,严重影响前台应用程序在显示屏幕上的显示。
[0043] 步骤103、若是,则禁止根据所述设置申请更新系统屏幕方向。
[0044] 本申请实施例中,为了防止预加载应用程序的屏幕方向设置申请对前台应用的显示造成影响,在判断出设置申请由预加载应用程序发出时,禁止根据该设置申请更新系统屏幕方向,从而避免显示屏幕发生旋转,保证系统显示的稳定性。禁止的具体实现方式本申请实施例不做限定。
[0045] 本申请实施例中提供的屏幕方向设置方法,接收到应用程序发出的针对屏幕方向的设置申请,判断发出该设置申请的应用程序是否为预加载应用程序,若是,则禁止根据设置申请更新系统屏幕方向。通过采用上述技术方案,可以在应用程序的预加载过程中合理控制系统屏幕方向的设置操作,防止预加载应用发出的针对屏幕方向的设置申请对当前的系统屏幕方向产生干扰,保证系统显示的稳定性。
[0046] 在一些实施例中,若所述应用程序不是预加载应用程序,则确定所述应用程序为前台应用程序;根据所述设置申请更新系统屏幕方向,并根据更新后的系统屏幕方向确定是否控制屏幕进行旋转操作。当判断出发出设置申请的应用程序不是预加载应用程序时,可确定该应用程序为前台正在启动的应用程序,这时,需要根据设置申请来更新系统屏幕方向,以满足该前台应用程序对屏幕方向的需求,保证前台应用程序的正常运行及显示。
[0047] 在一些实施例中,所述若是,则禁止根据所述设置申请更新系统屏幕方向,包括:若是,则确定所述设置申请的申请方式;若为静态方式,则跳过所述设置申请,以禁止根据所述设置申请更新系统屏幕方向;若为动态方式,则根据所述设置申请为所述应用程序设置应用方向,并禁止根据所述设置申请更新系统屏幕方向。这样设置的好处在于,针对不同的申请方式,选择合适的禁止根据该设置申请更新系统屏幕方向的实现方式。
[0048] 进一步的,所述静态方式包括:在应用程序对应的预设配置文件中增加屏幕方向属性;所述动态方式包括:通过应用程序对应的预设函数设置屏幕方向。在各种操作系统中,可以有不同的屏幕方向申请方式,但一般都包含静态方式和动态方式。静态方式可以是在应用程序对应的指定的配置文件中增加屏幕方向属性,系统可以记录发出屏幕方向设置申请的各应用程序的次序,当系统更新系统方向时,从顶部(系统会记录发出设置申请的应用程序的顺序,并形成zorder,顶部即zorder的最前面)查找到应用程序,若该应用程序为预加载应用程序,那么就跳过该设置申请,根据下面的应用程序(若该应用程序为前台应用程序,而非预加载应用程序)的屏幕方向属性更新系统记录的方向,如果系统方向发生变化,则控制屏幕旋转。动态方式可以是通过应用程序对应的指定的用于设置屏幕方向的函数来实现屏幕方向申请,若判断出当前的设置申请由预加载应用程序发出,则只根据该设置申请设置应用程序自身的方向,而不会更新系统方向,保证不触发旋屏操作。
[0049] 在一些实施例中,操作系统包括安卓操作系统;所述静态方式包括:在应用程序对应的AndroidManifest.xml文件中的指定的activity中增加android:screenOrientation的属性;所述动态方式包括:通过应用程序对应的函数setRequestedOrientation()设置屏幕方向。在Android系统中,活动窗口被称为Activity。Activity是一个负责与用户交互的组件,其提供一个屏幕(可以理解为屏幕界面,而非实体的显示屏幕),以供用户交互完成某项任务。在一个android应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件。在静态方式中,通过对activity的屏幕方向属性进行设置,来实现对应的应用界面的方向的设置,从而设置应用程序的屏幕方向。例如,在需要进行屏幕方向设置的activity中增加代码android:screenOrientation="landscape",则可将其屏幕方向设置为横向,即landscape代表横向,同理,portrait代表竖向,sensor代表自动切换,替代其中的landscape即可。在动态方式中,可以找到MainActivity.java,添加setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)代码,可以实现将屏幕方向设置为竖向,同理将PORTRAIT替换为LANDSCAPE,则可实现将屏幕方向设置为横向。
[0050] 在一些实施例中,所述预加载应用程序包括基于预先创建的预加载活动窗口堆栈进行预加载的应用程序,所述预加载活动窗口堆栈对应的边界坐标位于显示屏幕的坐标范围之外。这样设置的好处在于,可以在显示屏幕之外对预加载应用程序的应用界面进行提前绘制及显示,当预加载应用程序真正启动时,可以直接将该应用界面迁移至所述显示屏幕进行显示,进一步提升启动速度。
[0051] 安卓系统中,在对Activity进行管理时,有这样两个概念:Task(任务栈)和Stack(活动窗口堆栈)。Task对应一个应用程序,Task用于存放Activity,一个Task中可以存放一个或多个Activity,且这些Activity遵循“先进后出,后进先出”的原则。而Stack又用于对Task进行管理,通常,一个Stack对一个屏幕所需展示的各Activity所属的Task进行管理,一个Stack可以管理一个或多个Task,当然,Stack也同样遵循堆栈的基本管理原则。这里所述的屏幕并不一定是完整独立的显示屏,以“两个屏幕”为例,这两个屏幕可能只是一个完整显示屏中两个独立显示各自显示内容的区域。当然,如果终端具备两个甚至是两个以上的独立显示屏,则“两个屏幕”也可以是两个独立的显示屏。
[0052] 在Android系统中,支持多窗口模式,可包括分屏模式、画中画模式以及自由模式(FreeForm)。在多窗口模式下,应用程序所在的Stack可以有自己的尺寸(size),可以包括以终端屏幕左上角为原点的坐标系中的上下左右坐标。例如,(a,b,c,d),一般描述的是一个矩形的边界,可采用矩形左上角的坐标和右下角的坐标进行表示,即矩形的左上角坐标为(a,b),右下角坐标为(c,d),这样的矩形区域就对应Stack的size。Stack中的应用内布局是以Stack的size为准的,也就是说Activity对应的应用界面是在size的边界范围内进行显示的。
[0053] 在多窗口模式下,可以允许多个应用程序处于可见状态,包括系统和用户均可见和仅系统可见。系统和用户均可见指的是在显示屏幕上进行显示,且用户能够看到;仅系统可见指的是操作系统可见,而用户不可见,可能被前台的应用遮挡或者如本申请所要实现的在显示屏幕外显示。
[0054] 本申请实施例中,在显示屏幕外对目标应用程序的应用界面进行预加载,可以基于操作系统的多窗口机制来实现,通过多窗口机制将应用程序对应的size设在显示屏幕外而达到对用户不可见的目的,从而不会影响到前台应用程序的显示内容在显示屏幕上的显示。
[0055] 一般的,多窗口模式下,可以存在多种类型的Stack,如Home Stack表示桌面应用显示的Stack,App Stack表示第三方应用显示,还可以有其他分屏Stack等。本申请实施例中,新增了预加载活动窗口堆栈(预加载Stack),用于表示预加载应用显示的Stack,并设置预加载Stack的边界坐标位于显示屏幕的坐标范围之外,待预加载的应用程序可以显示在该Stack。对于Android系统来说,可以基于Android系统的多窗口机制,新建一个专门用于显示预加载应用的Stack。本申请实施例中,新建Stack是因为可以让新建的预加载Stack拥有自己的size以及可见性,从而实现在显示屏幕外预加载的目的。
[0056] 本申请实施例中,对预加载Stack的创建时机不做限定,可以是在终端出厂前默认设置预加载Stack处于常驻状态,即预加载Stack一直存在;也可以在终端开机时或终端解锁成功后创建;还可以在应用预加载事件被触发后(可以在确定目标应用程序之前)创建等等。本申请实施例中,对基于预加载Stack预加载目标应用程序对应的应用界面的具体过程不做限定,例如可以基于预加载Stack的size进行应用界面的绘制并显示等。
[0057] 在一些实施例中,所述判断所述应用程序是否为预加载应用程序,包括:获取所述应用程序所处的活动窗口堆栈的身份标识;判断所述身份标识是否为预加载身份;若是,则确定所述应用程序为预加载应用程序。这样设置的好处在于,可以根据Stack的身份标识快速准确地判断出发出设置申请的应用程序是否为预加载应用程序。
[0058] 在一些实施例中,所述预加载活动窗口堆栈对应的边界坐标为(H,0,2H,H),所述边界坐标对应的坐标系为系统坐标,所述系统坐标的原点为所述显示屏幕的左上角,H为所述显示屏幕的显示区域的长边长度。也就是说,H对应的边是显示屏幕的显示区域的最大边,在竖屏显示时为显示屏幕的高,在横屏显示时为显示屏幕的宽。这样设置的目的是考虑到显示屏幕横屏、预加载应用横屏显示,以及一些应用程序的正常显示。图2为本申请实施例提供的一种预加载活动窗口堆栈与显示屏幕显示区域的相对位置关系示意图。如图2所示,此时显示屏幕为竖屏方式,终端系统坐标的原点为显示屏幕201的左顶点(0,0),显示屏幕201的宽度方向为X轴,高度方向为Y轴,预加载Stack202对应的边界坐标为(H,0,2H,H),H为屏幕高,即左边实线矩形范围内的区域为主屏幕显示区域,右边虚线矩形范围内的区域为预加载显示区域。图3为本申请实施例提供的又一种预加载活动窗口堆栈与显示屏幕显示区域的相对位置关系示意图。如图3所示,此时显示屏幕为横屏方式,终端系统坐标的原点为显示屏幕301的左顶点(0,0),显示屏幕301的高度方向为X轴,宽度方向为Y轴,预加载Stack202对应的边界坐标为(H,0,2H,H),H为屏幕高,即左边实线矩形范围内的区域为主屏幕显示区域,右边虚线矩形范围内的区域为预加载显示区域。
[0059] 预加载Stack各个边界如此设置的原因在于:
[0060] 左上角的横坐标为H,是为了防止横屏时显示屏幕(也可称为主屏幕)显示到预加载应用的界面,因为主屏幕除了竖屏模式,还有横屏模式,当主屏幕横屏的时候,为了防止主屏幕显示区域显示了预加载的应用的局部,所以将预加载Stack对应的矩形区域的左上角横坐标设为屏幕高。
[0061] 左上角的纵坐标为0,是为了预加载应用能够正确计算状态栏高度。Android应用为了更好的设计用户界面(User Interface,UI),会自定义顶部状态栏,如果上边对应的纵坐标不等于0,那么状态栏的高度可能会错误。
[0062] 右下角的横坐标为2H(2倍屏幕高),即预加载Stack对应的矩形的宽=屏幕高,是为了预加载Stack的size能够包含预加载时候的横屏应用(即应用界面为横屏显示方式的应用程序)。
[0063] 右下角的纵坐标为H,即预加载Stack对应的矩形的高=屏幕高,是为了预加载Stack的size能够包含预加载时候的竖屏应用。
[0064] 在一些实施例中,在接收到预加载应用程序的运行指令时,根据所述预加载应用程序曾经发出(或再次发出)的针对屏幕方向的设置申请更新系统屏幕方向,并将预加载活动窗口堆栈中包含的所述预加载应用程序对应的应用界面迁移至显示屏幕进行显示。这样设置的好处在于,当预加载应用程序被真正启动时,系统能够及时响应预加载应用程序的屏幕方向申请,满足预加载应用程序的屏幕方向需求。
[0065] 图4为本申请实施例提供的另一种屏幕方向设置方法的流程示意图,该方法包括如下步骤:
[0066] 步骤401、接收到应用程序发出的针对屏幕方向的设置申请。
[0067] 步骤402、获取所述应用程序所处的活动窗口堆栈的身份标识。
[0068] 在本申请实施例中,预加载应用程序包括基于预先创建的预加载Stack进行预加载的应用程序,所述预加载Stack对应的边界坐标位于显示屏幕的坐标范围之外。
[0069] 步骤403、判断所述身份标识是否为预加载身份,若是,则执行步骤404;否则,执行步骤407。
[0070] 步骤404、判断设置申请为静态方式还是动态方式,若为静态方式,则执行步骤405;若为动态方式,则执行步骤406。
[0071] 其中,以Android系统为例,所述静态方式包括:在应用程序对应的AndroidManifest.xml文件中的指定的activity中增加android:screenOrientation的属性;所述动态方式包括:通过应用程序对应的函数setRequestedOrientation()设置屏幕方向。
[0072] 步骤405、跳过所述设置申请,以禁止根据所述设置申请更新系统屏幕方向。
[0073] 步骤406、根据所述设置申请为所述应用程序设置应用方向,并禁止根据所述设置申请更新系统屏幕方向。
[0074] 步骤407、确定所述应用程序为前台应用程序,根据所述设置申请更新系统屏幕方向,并根据更新后的系统屏幕方向确定是否控制屏幕进行旋转操作。
[0075] 示例性的,若更新后的系统屏幕方向与当前屏幕方向不一致,则控制屏幕进行旋转操作,若一致,则可保持原状,即不进行旋转操作。
[0076] 图5为本申请实施例提供的一种针对静态方式的屏幕方向设置流程对比示意图。如图5所示,左边的流程图表示正常情况下屏幕方向设置流程,即申请屏幕方向的是前台应用程序,当应用A作为前台应用被打开后,依照zorder从对应的Stack的顶部查找到应用A,使用应用A的方向,更新系统记录的方向,如果系统方向发生变化,则屏幕旋转;右边的流程图表示预加载情况下屏幕方向设置流程,即申请屏幕方向的是预加载应用程序,在应用A作为预加载应用被预加载过程中,从顶部查找到应用A,则跳过预加载应用A,更新系统记录的方向,如果系统方向发生变化,则屏幕旋转。
[0077] 图6为本申请实施例提供的一种针对动态方式的屏幕方向设置流程对比示意图。如图6所示,左边的流程图表示正常情况下屏幕方向设置流程,即申请屏幕方向的是前台应用程序,当应用B作为前台应用被打开后,设置应用B的方向,更新系统记录的方向,如果系统方向发生变化,则屏幕旋转;右边的流程图表示预加载情况下屏幕方向设置流程,即申请屏幕方向的是预加载应用程序,在应用B作为预加载应用被预加载过程中,设置应用B的方向后结束流程。
[0078] 本申请实施例提供的屏幕方向设置方法,在接收到应用程序发出的针对屏幕方向的设置申请后,根据应用程序所属的Stack的身份标识识别是否为预加载应用程序,若是,则根据设置申请的申请方式采用不同的策略来控制系统屏幕方向的更新以及屏幕的旋转,防止预加载应用发出的针对屏幕方向的设置申请对当前的系统屏幕方向产生干扰,保证系统显示的稳定性。
[0079] 图7为本申请实施例提供的又一种屏幕方向设置方法的流程示意图,如图7所示,该方法包括:
[0080] 步骤701、检测到应用预加载事件被触发。
[0081] 步骤702、确定待预加载的目标应用程序。
[0082] 步骤703、基于预先创建的预加载活动窗口堆栈预加载目标应用程序对应的应用界面。
[0083] 其中,所述预加载活动窗口堆栈对应的边界坐标位于显示屏幕的坐标范围之外。
[0084] 步骤704、接收到应用程序发出的针对屏幕方向的设置申请。
[0085] 步骤705、获取所述应用程序所处的活动窗口堆栈的身份标识。
[0086] 步骤706、判断所述身份标识是否为预加载身份,若是,则执行步骤707;否则,执行步骤710。
[0087] 步骤707、确定所述应用程序为目标应用程序,判断设置申请为静态方式还是动态方式,若为静态方式,则执行步骤708;若为动态方式,则执行步骤709。
[0088] 步骤708、跳过所述设置申请,以禁止根据所述设置申请更新系统屏幕方向,执行步骤711。
[0089] 步骤709、根据所述设置申请为目标应用程序设置应用方向,并禁止根据所述设置申请更新系统屏幕方向,执行步骤711。
[0090] 步骤710、确定所述应用程序为前台应用程序,根据所述设置申请更新系统屏幕方向,并根据更新后的系统屏幕方向确定是否控制屏幕进行旋转操作。
[0091] 步骤711、在接收到目标应用程序的运行指令时,根据目标应用程序曾经发出的针对屏幕方向的设置申请更新系统屏幕方向,并将预加载活动窗口堆栈中包含的所述目标应用程序对应的应用界面迁移至显示屏幕进行显示。
[0092] 本申请实施例提供的屏幕方向设置方法,在检测到应用预加载事件被触发后,确定目标应用程序,并在处于显示屏幕外的预加载Stack中预加载目标应用程序对应的应用界面,在预加载过程中会涉及到应用界面的绘制操作,需要申请屏幕方向,以便绘制相应屏幕方向的界面,在这种情况下,若接收到应用程序发出的屏幕方向设置申请,则可能该应用程序为正在进行预加载的目标应用程序,所以需要进行应用程序的身份判定,进而采取相应的策略来控制系统屏幕方向的更新。若系统确定当前并未在进行任何应用程序的预加载,则可无需进行应用程序身份的判定以及后续步骤,减少不必要步骤的执行,节约系统资源。
[0093] 图8为本申请实施例提供的一种屏幕方向设置装置的结构框图,该装置可由软件和/或硬件实现,一般集成在终端中,可通过执行屏幕方向设置方法来进行屏幕方向的设置。如图8所示,该装置包括:
[0094] 设置申请接收模块801,用于接收应用程序发出的针对屏幕方向的设置申请;
[0095] 判断模块802,用于在所述设置申请接收模块接收到应用程序发出的针对屏幕方向的设置申请时,判断所述应用程序是否为预加载应用程序;
[0096] 屏幕方向更新模块803,用于在所述判断模块的判断结果为是时,禁止根据所述设置申请更新系统屏幕方向。
[0097] 本申请实施例中提供的屏幕方向设置装置,接收到应用程序发出的针对屏幕方向的设置申请,判断发出该设置申请的应用程序是否为预加载应用程序,若是,则禁止根据设置申请更新系统屏幕方向。通过采用上述技术方案,可以在应用程序的预加载过程中合理控制系统屏幕方向的设置操作,防止预加载应用发出的针对屏幕方向的设置申请对当前的系统屏幕方向产生干扰,保证系统显示的稳定性。
[0098] 可选的,屏幕方向更新模块还用于:
[0099] 在所述判断模块的判断结果为否时,确定所述应用程序为前台应用程序;
[0100] 根据所述设置申请更新系统屏幕方向,并根据更新后的系统屏幕方向确定是否控制屏幕进行旋转操作。
[0101] 可选的,所述在所述判断模块的判断结果为是时,禁止根据所述设置申请更新系统屏幕方向,包括:
[0102] 在所述判断模块的判断结果为是时,确定所述设置申请的申请方式;
[0103] 若为静态方式,则跳过所述设置申请,以禁止根据所述设置申请更新系统屏幕方向;
[0104] 若为动态方式,则根据所述设置申请为所述应用程序设置应用方向,并禁止根据所述设置申请更新系统屏幕方向。
[0105] 可选的,所述静态方式包括:在应用程序对应的预设配置文件中增加屏幕方向属性;
[0106] 所述动态方式包括:通过应用程序对应的预设函数设置屏幕方向。
[0107] 可选的,操作系统包括安卓操作系统;
[0108] 所述静态方式包括:在应用程序对应的AndroidManifest.xml文件中的指定的activity中增加android:screenOrientation的属性;
[0109] 所述动态方式包括:通过应用程序对应的函数setRequestedOrientation()设置屏幕方向。
[0110] 可选的,所述预加载应用程序包括基于预先创建的预加载活动窗口堆栈进行预加载的应用程序,所述预加载活动窗口堆栈对应的边界坐标位于显示屏幕的坐标范围之外。
[0111] 可选的,所述判断所述应用程序是否为预加载应用程序,包括:
[0112] 获取所述应用程序所处的活动窗口堆栈的身份标识;
[0113] 判断所述身份标识是否为预加载身份;
[0114] 若是,则确定所述应用程序为预加载应用程序。
[0115] 可选的,所述预加载活动窗口堆栈对应的边界坐标为(H,0,2H,H),所述边界坐标对应的坐标系为系统坐标,所述系统坐标的原点为所述显示屏幕的左上角,H为所述显示屏幕的显示区域的长边长度。
[0116] 本申请实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行屏幕方向设置方法,该方法包括:
[0117] 接收到应用程序发出的针对屏幕方向的设置申请;
[0118] 判断所述应用程序是否为预加载应用程序;
[0119] 若是,则禁止根据所述设置申请更新系统屏幕方向。
[0120] 存储介质——任何的各种类型的存储器设备或存储设备。术语“存储介质”旨在包括:安装介质,例如CD-ROM、软盘或磁带装置;计算机系统存储器或随机存取存储器,诸如DRAM、DDRRAM、SRAM、EDORAM,兰巴斯(Rambus)RAM等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的第一计算机系统中,或者可以位于不同的第二计算机系统中,第二计算机系统通过网络(诸如因特网)连接到第一计算机系统。第二计算机系统可以提供程序指令给第一计算机用于执行。术语“存储介质”可以包括可以驻留在不同位置中(例如在通过网络连接的不同计算机系统中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。
[0121] 当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的屏幕方向设置操作,还可以执行本申请任意实施例所提供的屏幕方向设置方法中的相关操作。
[0122] 本申请实施例提供了一种终端,该终端中可集成本申请实施例提供的屏幕方向设置装置。图9为本申请实施例提供的一种终端的结构示意图。终端900可以包括:存储器901,处理器902及存储在存储器901上并可在处理器902运行的计算机程序,所述处理器902执行所述计算机程序时实现如本申请实施例所述的屏幕方向设置方法。
[0123] 本申请实施例提供的终端,可以在应用程序的预加载过程中合理控制系统屏幕方向的设置操作,防止预加载应用发出的针对屏幕方向的设置申请对当前的系统屏幕方向产生干扰,保证系统显示的稳定性。
[0124] 图10为本申请实施例提供的另一种终端的结构示意图,该终端可以包括:壳体(图中未示出)、存储器1001、中央处理器(central processing unit,CPU)1002(又称处理器,以下简称CPU)、电路板(图中未示出)和电源电路(图中未示出)。所述电路板安置在所述壳体围成的空间内部;所述CPU1002和所述存储器1001设置在所述电路板上;所述电源电路,用于为所述终端的各个电路或器件供电;所述存储器1001,用于存储可执行程序代码;所述CPU1002通过读取所述存储器1001中存储的可执行程序代码来运行与所述可执行程序代码对应的计算机程序,以实现以下步骤:
[0125] 接收到应用程序发出的针对屏幕方向的设置申请;
[0126] 判断所述应用程序是否为预加载应用程序;
[0127] 若是,则禁止根据所述设置申请更新系统屏幕方向。
[0128] 所述终端还包括:外设接口1003、RF(Radio Frequency,射频)电路1005、音频电路1006、扬声器1011、电源管理芯片1008、输入/输出(I/O)子系统1009、其他输入/控制设备
1010、触摸屏1012、其他输入/控制设备1010以及外部端口1004,这些部件通过一个或多个通信总线或信号线1007来通信。
[0129] 应该理解的是,图示终端1000仅仅是终端的一个范例,并且终端1000可以具有比图中所示出的更多的或者更少的部件,可以组合两个或更多的部件,或者可以具有不同的部件配置。图中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
[0130] 下面就本实施例提供的用于屏幕方向设置的终端进行详细的描述,该终端以手机为例。
[0131] 存储器1001,所述存储器1001可以被CPU1002、外设接口1003等访问,所述存储器1001可以包括高速随机存取存储器,还可以包括非易失性存储器,例如一个或多个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0132] 外设接口1003,所述外设接口1003可以将设备的输入和输出外设连接到CPU1002和存储器1001。
[0133] I/O子系统1009,所述I/O子系统1009可以将设备上的输入输出外设,例如触摸屏1012和其他输入/控制设备1010,连接到外设接口1003。I/O子系统1009可以包括显示控制器10091和用于控制其他输入/控制设备1010的一个或多个输入控制器10092。其中,一个或多个输入控制器10092从其他输入/控制设备1010接收电信号或者向其他输入/控制设备
1010发送电信号,其他输入/控制设备1010可以包括物理按钮(按压按钮、摇臂按钮等)、拨号盘、滑动开关、操纵杆、点击滚轮。值得说明的是,输入控制器10092可以与以下任一个连接:键盘、红外端口、USB接口以及诸如鼠标的指示设备。
[0134] 触摸屏1012,所述触摸屏1012是用户终端与用户之间的输入接口和输出接口,将可视输出显示给用户,可视输出可以包括图形、文本、图标、视频等。
[0135] I/O子系统1009中的显示控制器10091从触摸屏1012接收电信号或者向触摸屏1012发送电信号。触摸屏1012检测触摸屏上的接触,显示控制器10091将检测到的接触转换为与显示在触摸屏1012上的用户界面对象的交互,即实现人机交互,显示在触摸屏1012上的用户界面对象可以是运行游戏的图标、联网到相应网络的图标等。值得说明的是,设备还可以包括光鼠,光鼠是不显示可视输出的触摸敏感表面,或者是由触摸屏形成的触摸敏感表面的延伸。
[0136] RF电路1005,主要用于建立手机与无线网络(即网络侧)的通信,实现手机与无线网络的数据接收和发送。例如收发短信息、电子邮件等。具体地,RF电路1005接收并发送RF信号,RF信号也称为电磁信号,RF电路1005将电信号转换为电磁信号或将电磁信号转换为电信号,并且通过该电磁信号与通信网络以及其他设备进行通信。RF电路1005可以包括用于执行这些功能的已知电路,其包括但不限于天线系统、RF收发机、一个或多个放大器、调谐器、一个或多个振荡器、数字信号处理器、CODEC(COder-DECoder,编译码器)芯片组、用户标识模块(Subscriber Identity Module,SIM)等等。
[0137] 音频电路1006,主要用于从外设接口1003接收音频数据,将该音频数据转换为电信号,并且将该电信号发送给扬声器1011。
[0138] 扬声器1011,用于将手机通过RF电路1005从无线网络接收的语音信号,还原为声音并向用户播放该声音。
[0139] 电源管理芯片1008,用于为CPU1002、I/O子系统及外设接口所连接的硬件进行供电及电源管理。
[0140] 上述实施例中提供的屏幕方向设置装置、存储介质及终端可执行本申请任意实施例所提供的屏幕方向设置方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的屏幕方向设置方法。
[0141] 注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。