CN108399090A - 可见性刷新方法、装置、存储介质及智能终端 - Google Patents

可见性刷新方法、装置、存储介质及智能终端 Download PDF

Info

Publication number
CN108399090A
CN108399090A CN201810129339.XA CN201810129339A CN108399090A CN 108399090 A CN108399090 A CN 108399090A CN 201810129339 A CN201810129339 A CN 201810129339A CN 108399090 A CN108399090 A CN 108399090A
Authority
CN
China
Prior art keywords
attribute
activity
screen
surfaceview
occupies
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.)
Granted
Application number
CN201810129339.XA
Other languages
English (en)
Other versions
CN108399090B (zh
Inventor
刘畅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN201810129339.XA priority Critical patent/CN108399090B/zh
Publication of CN108399090A publication Critical patent/CN108399090A/zh
Application granted granted Critical
Publication of CN108399090B publication Critical patent/CN108399090B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/72Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
    • H04M1/724User interfaces specially adapted for cordless or mobile telephones

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本申请实施例公开了可见性刷新方法、装置、存储介质及智能终端。该方法包括:在进行Activity堆栈的可见性刷新操作过程中,确定当前Activity的可见属性为可见时,获取当前Activity的屏幕占用属性,若为部分覆盖,则判断当前Activity是否拥有SurfaceView;在确定当前Activity拥有SurfaceView,且SurfaceView的屏幕占用属性为全面覆盖时,确定下一个Activity的可见属性为不可见,并结束针对Activity堆栈的可见性刷新操作。本申请实施例通过采用上述技术方案,能够更加准确地确定下一个Activity的可见属性,提升可见性刷新效率。

Description

可见性刷新方法、装置、存储介质及智能终端
技术领域
本申请实施例涉及显示控制技术领域,尤其涉及可见性刷新方法、装置、存储介质及智能终端。
背景技术
目前,手机、平板电脑以及智能电视等智能终端已经越来越普及,并成为人们生活中必不可少的一部分。智能终端中一般安装有操作系统,安卓(Android)平台是最常见的操作系统之一。
Activity是Android组件中最基本也是最为常见的四大组件(Activity活动,Service服务,Content Provider内容提供者,Broadcast Receiver广播接收器)之一。Activity可理解为Android系统中应用程序(Application,APP)的一个界面,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。
原生Android系统中在启动Activity完成后,会对当前所有的Activity界面的可见性进行刷新,随后进行绘制及合成等相关工作,最终实现屏幕内容的刷新。然而,现有的可见性刷新方案仍需要进一步优化。
发明内容
本申请实施例提供一种可见性刷新方法、装置、存储介质及智能终端,可以优化安卓操作系统中的可见性刷新方案。
第一方面,本申请实施例提供了一种可见性刷新方法,包括:
在进行Activity堆栈的可见性刷新操作过程中,确定当前Activity的可见属性为可见时,获取所述当前Activity的屏幕占用属性,其中,所述屏幕占用属性包括全面覆盖和部分覆盖;
在所述当前Activity的屏幕占用属性为部分覆盖时,判断所述当前Activity是否拥有SurfaceView;
在确定所述当前Activity拥有SurfaceView,且所述SurfaceView的屏幕占用属性为全面覆盖时,确定下一个Activity的可见属性为不可见,并结束针对所述Activity堆栈的可见性刷新操作。
第二方面,本申请实施例提供了一种可见性刷新装置,包括:
屏幕占用属性获取模块,用于在进行Activity堆栈的可见性刷新操作过程中,确定当前Activity的可见属性为可见时,获取所述当前Activity的屏幕占用属性,其中,所述屏幕占用属性包括全面覆盖和部分覆盖;
判断模块,用于在所述当前Activity的屏幕占用属性为部分覆盖时,判断所述当前Activity是否拥有SurfaceView;
可见属性确定模块,用于在确定所述当前Activity拥有SurfaceView,且所述SurfaceView的屏幕占用属性为全面覆盖时,确定下一个Activity的可见属性为不可见,并结束针对所述Activity堆栈的可见性刷新操作。
第三方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请实施例所述的可见性刷新方法。
第四方面,本申请实施例提供了一种智能终端,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,所述处理器执行所述计算机程序时实现如本申请实施例所述的可见性刷新方法。
本申请实施例中提供的可见性刷新方案,在进行Activity堆栈的可见性刷新操作过程中,确定当前Activity的可见属性为可见时,获取其屏幕占用属性,若为部分覆盖,则不会直接将下一个Activity的可见属性设置为可见,而是判断当前Activity是否拥有SurfaceView,若拥有且SurfaceView的屏幕占用属性为全面覆盖时,确定下一个Activity的可见属性为不可见,并结束针对Activity堆栈的可见性刷新操作。通过采用上述技术方案,在可见性刷新时进行Activity堆栈的可见性刷新操作过程中,将Activity拥有的SurfaceView的屏幕占用属性考虑进来,能够更加准确地确定下一个Activity的可见属性,提升可见性刷新效率。
附图说明
图1为本申请实施例提供的一种可见性刷新方法的流程示意图;
图2为本申请实施例提供的一种Activity叠加示意图;
图3为本申请实施例提供的另一种可见性刷新方法的流程示意图;
图4为本申请实施例提供的一种可见性刷新装置的结构框图;
图5为本申请实施例提供的一种智能终端的结构示意图;
图6为本申请实施例提供的又一种智能终端的结构示意图。
具体实施方式
下面结合附图并通过具体实施方式来进一步说明本申请的技术方案。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
图1为本申请实施例提供的一种可见性刷新方法的流程示意图,该方法可以由可见性刷新装置执行,其中该装置可由软件和/或硬件实现,一般可集成在智能终端中。如图1所示,该方法包括:
步骤101、在进行Activity堆栈的可见性刷新操作过程中,确定当前Activity的可见属性为可见时,获取所述当前Activity的屏幕占用属性。
其中,所述屏幕占用属性包括全面覆盖和部分覆盖。示例性的,当前Activity对应的图层内容能够将下一个Activity对应的图层内容完全遮挡时,当前Activity的屏幕占用属性为全面覆盖,否则,当前Activity屏幕占用属性为部分覆盖。
示例性的,本申请实施例中的智能终端可包括智能手机、平板电脑以及智能家电(如智能电视等)等安装有Android操作系统的设备。
在Android操作系统中,Activity是Android组件中最基本也是最为常见的四大组件之一。Activity可理解为Android系统中应用程序的一个界面,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。一般的,每个Activity对应一个Surface(图层),Surface可以理解为Android系统中的一块画布,应用程序在这个Surface上进行绘制,系统最终将各个应用程序绘制的Surface一起叠加起来显示在屏幕上。
原生Android系统中在启动Activity完成后,会对当前所有的Activity界面的可见性进行刷新,随后进行图层绘制及合成等相关工作,最终实现屏幕内容的刷新。具体的,在启动Activity完成后,按照Activity在堆栈中的顺序从上往下依次遍历,如果上一层的Activity的屏幕占用属性为部分覆盖,则下一层的Activity就需要设置为可见,随后继续判断下一层的Activity的可见性,在所有的Activity的可见性被设置完毕后,对可见的Activity对应的Surface进行绘制,得到可见图层列表(DispalyList),最后将可见图层列表中的各图层合成为待显示画面并发送至显示屏进行显示,从而实现屏幕显示画面的刷新。
步骤102、在所述当前Activity的屏幕占用属性为部分覆盖时,判断所述当前Activity是否拥有SurfaceView。
发明人发现,在上述相关技术中,在对Activity堆栈的可见性进行刷新时,并未考虑Activity是否拥有SurfaceView,也并未考虑SurfaceView对屏幕占用的情况,会对可见性刷新效率造成影响。
SurfaceView是Android系统中的一种特殊的视图,可理解为一种Android APP控件,但是会独立申请一块Surface,不跟APP中的其他内容共用一块Surface,也即,当一个Activity拥有一个SurfaceView时,Activity和SurfaceView各自拥有自己的Surface,不会共享。这样,上述相关技术中,在对Activity堆栈的可见性进行刷新时,若当前Activity的屏幕占用属性为部分覆盖,而其拥有一个全面覆盖的SurfaceView时,实际上下面的Activity都会被SurfaceView遮挡,图层内容无法显示,但上述刷新方案中,会将下一层的Activity设置为可见,然后还需要继续判断下一层的Activity是否可见,将本可以结束的可见性刷新操作继续进行,徒增了多余的步骤,影响可见性刷新效率。此外,至少下一层的Activity被误设置为可见,那么后续步骤中需要对该下一层Activity对应的图层进行绘制,并将绘制完的图层加入可见图层列表中参与图层合成,最终严重影响了屏幕刷新效率,造成系统性能上的损失。
图2为本申请实施例提供的一种Activity叠加示意图,如图2所示,第一Activity201被开发者设置了半透明的属性,第二Activity202位于第一Activity201下层(需要说明的是,为了便于理解,作图时将第一Activity201和第二Activity202的位置进行了错位处理,实际上两者是重叠的),当第一Activity201不拥有SurfaceView时,由于第一Activity201是半透明的,第二Activity202中的图层内容将会透过第一Activity201而被用户看到,所以第二Activity202应该被设置为可见,然而,如图2所示,第一Activity201拥有一个占满整个屏幕的SurfaceView203,那么SurfaceView203会完全遮挡住第二Activity202的图层内容,所以第二Activity202实际上是不可见的,应该被设置为不可见,并结束可见性刷新流程,避免多余的操作被执行,影响可见性刷新效率。
本申请实施例中,在确定当前Activity的屏幕占用属性为部分覆盖时,不会直接将Activity堆栈中的下一个Activity的可见属性设置为可见,而是先判断当前Activity是否拥有SurfaceView,然后根据判断结果再决定后续的操作。
步骤103、在确定所述当前Activity拥有SurfaceView,且所述SurfaceView的屏幕占用属性为全面覆盖时,确定下一个Activity的可见属性为不可见,并结束针对所述Activity堆栈的可见性刷新操作。
示例性的,在确定当前Activity拥有SurfaceView时,需要对SurfaceView的屏幕占用属性进行判断,从而获知当前Activity拥有的SurfaceView是否会将下一个Activity对应的图层内容完全遮挡,即当SurfaceView的屏幕占用属性为全面覆盖时,确定下一个Activity的可见属性为不可见。此时,堆栈中剩余的Activity的可见属性均为不可见,可见性刷新操作可结束。相比于上述的相关技术,避免了由于全面覆盖的SurfaceView的存在而导致多余步骤被执行,提升了可见性刷新效率及屏幕刷新效率,提高智能终端的显示性能。
本申请实施例中提供的可见性刷新方法,在进行Activity堆栈的可见性刷新操作过程中,确定当前Activity的可见属性为可见时,获取其屏幕占用属性,若为部分覆盖,则不会直接将下一个Activity的可见属性设置为可见,而是判断当前Activity是否拥有SurfaceView,若拥有且SurfaceView的屏幕占用属性为全面覆盖时,确定下一个Activity的可见属性为不可见,并结束针对Activity堆栈的可见性刷新操作。通过采用上述技术方案,在可见性刷新时进行Activity堆栈的可见性刷新操作过程中,将Activity拥有的SurfaceView的屏幕占用属性考虑进来,能够更加准确地确定下一个Activity的可见属性,提升可见性刷新效率。
在一些实施例中,在确定所述当前Activity拥有SurfaceView,且所述SurfaceView的屏幕占用属性为部分覆盖时,确定下一个Activity的可见属性为可见,并继续针对所述Activity堆栈的可见性刷新操作。这样设置的好处在于,当SurfaceView的屏幕占用属性为部分覆盖时,说明下一个Activity对应的图层内容并不会被全部遮挡,因此,可将下一个Activity的可见属性设置为可见,并继续后面的Activity的可见属性设置,避免下一个Activity的图层内容缺失。示例性的,将所述下一个Activity作为新的当前Activity,重复执行获取当前Activity的屏幕占用属性等相关操作。
在一些实施例中,所述获取所述当前Activity的屏幕占用属性,包括:获取所述当前Activity的透明属性以及屏幕占用面积信息;当所述当前Activity的透明属性为透明或半透明,或所述屏幕占用面积小于屏幕面积时,确定所述当前Activity的屏幕占用属性为部分覆盖;当所述当前Activity的透明属性为不透明,且所述屏幕占用面积等于屏幕面积时,确定所述当前Activity的屏幕占用属性为全面覆盖。这样设置的好处在于,能够准确地判断出当前Activity对应的图层内容是否能够将下一个Activity对应的图层内容完全遮挡。
进一步的,当所述屏幕占用面积信息中包含浮动窗口属性时,确定所述屏幕占用面积小于屏幕面积。在当前Activity具备浮动窗口属性时,说明当前Activity仅占用了屏幕的部分区域,因此屏幕占用面积小于屏幕面积,这样设置的好处在于,能够快速准确地确定当前Activity的屏幕占用属性。
在一些实施例中,所述判断所述当前Activity是否拥有SurfaceView,包括:通过Activity Manager Service查找所述当前Activity对应的ActivityRecord,当所述ActivityRecord包含SurfaceView对应的属性信息时,确定所述当前Activity是否拥有SurfaceView。这样设置的好处在于,能够快速准确地确定当前Activity是否拥有SurfaceView,对系统改动小,兼容性好。
在一些实施例中,还包括:读取所述ActivityRecord中包含的SurfaceView对应的属性信息;根据所读取的属性信息中的尺寸信息确定所述SurfaceView的屏幕占用属性是否为全面覆盖。一般的,SurfaceView不具备透明属性,或者说其透明属性为不透明,因此,这样设置的好处在于,可根据尺寸信息快速判断出SurfaceView是否能够将下一个Activity对应的图层内容完全遮挡。当根据尺寸信息确定SurfaceView对应的面积等于屏幕面积时,屏幕占用属性为全面覆盖;当根据尺寸信息确定SurfaceView对应的面积小于屏幕面积时,屏幕占用属性为部分覆盖。
进一步的,当所述ActivityRecord中包含多个SurfaceView时,所述读取所述ActivityRecord中包含的SurfaceView对应的属性信息,包括:对于每个SurfaceView,读取所述ActivityRecord中包含的当前SurfaceView的属性信息中的尺寸信息和位置信息,根据尺寸信息和位置信息确定所述当前SurfaceView对应的矩形区域。所述根据所读取的属性信息中的尺寸信息确定所述SurfaceView的屏幕占用属性是否为全面覆盖,包括:将多个SurfaceView分别对应的矩形区域进行求或操作,得到所述多个SurfaceView对应的屏幕占用总区域,当所述屏幕占用总区域的面积等于所述屏幕面积时,确定所述多个SurfaceView的屏幕占用属性为全面覆盖。这样设置的好处在于,对于某些Activity来说,可能拥有多个SurfaceView,单个SurfaceView可能并不能遮挡住下一个Activity的所有图层内容,但多个SurfaceView组合在一起可能会覆盖整个屏幕,进而完全遮挡住下一个Activity的图层内容,因此,需要综合多个SurfaceView的屏幕占用情况来确定SurfaceView的屏幕占用属性是否为全面覆盖,以免发生漏判,增加多余的步骤。
图3为本申请实施例提供的另一种可见性刷新方法的流程示意图,该方法包括如下步骤:
步骤301、开始Activity堆栈的可见性刷新操作,确定当前Activity的可见属性为可见。
示例性的,开始进行Activity堆栈的可见性刷新操作时,当前Activity为第一个Activity(即堆栈顶层的Activity),且其可见属性为可见。
步骤302、获取当前Activity的透明属性,并判断透明属性是否为透明或半透明,若是,则执行步骤304;否则,执行步骤303。
可以理解的是,透明属性为透明时,执行步骤304,透明属性为半透明时,执行步骤304,透明属性为不透明时,执行步骤303。
示例性的,透明属性是在应用开发中,通过一个xml的文件来配置一个主题,若该主题为半透明,则使用该主题的Activity就都会具有半透明属性。
例如:下面的styles.xml文件就是一个主题xml文件,其中,将里面的android:windowIsTranslucent配置为了true。
然后在应用的Manifest文件中,声明需要被设置为半透明属性的Activity使用该主题。
manifest.xml
<activity
android:name=".TransparentActivity"
android:theme="@style/Transparent">
</activity>
如下就是声明TransparentActivity这个Activity是半透明的,只要应用配置了这个属性,系统就一定能够知道这个Activity是半透明的。系统在ActivityManagerService中创建一个ActivityRecord的时候就会去读取应用配置的xml。
其中,上述第二行就是去获取应用配置的属性,这样系统就获得了当前Activity是不是具有半透明属性了。
步骤303、判断当前Activity是否具备浮动窗口属性,若是,则执行步骤304;否则,执行步骤307。
可以理解的是,关于透明属性的判断以及浮动窗口属性的判断顺序可以互换,本申请不做限定。
示例性的,系统可根据当前Activity是否配置了浮动窗口的属性以及前面的半透明属性综合判断当前Activity是否为全面覆盖的屏幕占用属性(即全屏),例如通过下面的逻辑实现:
Fullscreen=ent!null&&!ent.array.getBoolean(
com.android.internal.R.styleable.Window_windowIsFloating,false)&&!transluncent
步骤304、通过Activity Manager Service查找所述当前Activity对应的ActivityRecord。
步骤305、判断ActivityRecord是否包含SurfaceView对应的属性信息,若是,则执行步骤306;否则,执行步骤308。
SurfaceView属于应用申请使用的,所以,在应用申请的时候就需要做通知AMS记录相关的工作。
在SurfaceView这个类里有个方法onAttachedToWindow,会在这个SurfaceView附着在一个窗口上的时候被调用。
ViewRootImpl类相当于是一个树形结构的根节点,管理一个Activity中的所有控件。
通过reportSurfaceViewSizeAndPosition,将当前SurfaceView的信息通知给ActivityManagerService。然后ActivityManagerService会找到对应的ActivityRecord,将这个SurfaceView的信息存放在一个队列里面。只需要查找ActivityRecord的surfaceviews这个队列就能够知道当前的Activity是否拥有SurfaceView,以及拥有哪些SurfaceView了。
ArrayList<SurfaceFrame>surfaceviews
步骤306、读取SurfaceView的属性信息,判断SurfaceView的屏幕占用属性是否为全面覆盖,若是,则执行步骤307;否则,执行步骤308。
步骤307、将下一个Activity的可见属性为不可见,并结束针对Activity堆栈的可见性刷新操作。
步骤308、将下一个Activity的可见属性为可见,将该下一个Activity作为新的当前Activity,并返回执行步骤302。
本申请实施例提供的可见性刷新方法,在进行Activity堆栈的可见性刷新操作过程中,综合考虑当前Activity以及其所拥有的SurfaceView的屏幕占用属性,进而准确地设置下一个Activity的可见性,提升可见性刷新效率。
图4为本申请实施例提供的一种可见性刷新装置的结构框图,该装置可由软件和/或硬件实现,一般集成在智能终端中,可通过执行可见性刷新方法来进行可见性刷新。如图4所示,该装置包括:
屏幕占用属性获取模块401,用于在进行Activity堆栈的可见性刷新操作过程中,确定当前Activity的可见属性为可见时,获取所述当前Activity的屏幕占用属性,其中,所述屏幕占用属性包括全面覆盖和部分覆盖;
判断模块402,用于在所述当前Activity的屏幕占用属性为部分覆盖时,判断所述当前Activity是否拥有SurfaceView;
可见属性确定模块403,用于在确定所述当前Activity拥有SurfaceView,且所述SurfaceView的屏幕占用属性为全面覆盖时,确定下一个Activity的可见属性为不可见,并结束针对所述Activity堆栈的可见性刷新操作。
本申请实施例提供的可见性刷新装置,在进行Activity堆栈的可见性刷新操作过程中,确定当前Activity的可见属性为可见时,获取其屏幕占用属性,若为部分覆盖,则不会直接将下一个Activity的可见属性设置为可见,而是判断当前Activity是否拥有SurfaceView,若拥有且SurfaceView的屏幕占用属性为全面覆盖时,确定下一个Activity的可见属性为不可见,并结束针对Activity堆栈的可见性刷新操作。通过采用上述技术方案,在可见性刷新时进行Activity堆栈的可见性刷新操作过程中,将Activity拥有的SurfaceView的屏幕占用属性考虑进来,能够更加准确地确定下一个Activity的可见属性,提升可见性刷新效率。
可选的,所述可见属性确定模块还用于:在确定所述当前Activity拥有SurfaceView,且所述SurfaceView的屏幕占用属性为部分覆盖时,确定下一个Activity的可见属性为可见,并继续针对所述Activity堆栈的可见性刷新操作。
可选的,所述获取所述当前Activity的屏幕占用属性,包括:
获取所述当前Activity的透明属性以及屏幕占用面积信息;
当所述当前Activity的透明属性为透明或半透明,或所述屏幕占用面积小于屏幕面积时,确定所述当前Activity的屏幕占用属性为部分覆盖;当所述当前Activity的透明属性为不透明,且所述屏幕占用面积等于屏幕面积时,确定所述当前Activity的屏幕占用属性为全面覆盖。
可选的,当所述屏幕占用面积信息中包含浮动窗口属性时,确定所述屏幕占用面积小于屏幕面积。
可选的,所述判断所述当前Activity是否拥有SurfaceView,包括:
通过Activity Manager Service查找所述当前Activity对应的ActivityRecord,当所述ActivityRecord包含SurfaceView对应的属性信息时,确定所述当前Activity是否拥有SurfaceView。
可选的,该装置还包括:
属性信息读取模块,用于读取所述ActivityRecord中包含的SurfaceView对应的属性信息;
屏幕占用属性判断模块,用于根据所读取的属性信息中的尺寸信息确定所述SurfaceView的屏幕占用属性是否为全面覆盖。
可选的,当所述ActivityRecord中包含多个SurfaceView时,所述读取所述ActivityRecord中包含的SurfaceView对应的属性信息,包括:
对于每个SurfaceView,读取所述ActivityRecord中包含的当前SurfaceView的属性信息中的尺寸信息和位置信息,根据尺寸信息和位置信息确定所述当前SurfaceView对应的矩形区域;
所述根据所读取的属性信息中的尺寸信息确定所述SurfaceView的屏幕占用属性是否为全面覆盖,包括:
将多个SurfaceView分别对应的矩形区域进行求或操作,得到所述多个SurfaceView对应的屏幕占用总区域,当所述屏幕占用总区域的面积等于所述屏幕面积时,确定所述多个SurfaceView的屏幕占用属性为全面覆盖。
本申请实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行可见性刷新方法,该方法包括:
在进行Activity堆栈的可见性刷新操作过程中,确定当前Activity的可见属性为可见时,获取所述当前Activity的屏幕占用属性,其中,所述屏幕占用属性包括全面覆盖和部分覆盖;
在所述当前Activity的屏幕占用属性为部分覆盖时,判断所述当前Activity是否拥有SurfaceView;
在确定所述当前Activity拥有SurfaceView,且所述SurfaceView的屏幕占用属性为全面覆盖时,确定下一个Activity的可见属性为不可见,并结束针对所述Activity堆栈的可见性刷新操作。
存储介质——任何的各种类型的存储器设备或存储设备。术语“存储介质”旨在包括:安装介质,例如CD-ROM、软盘或磁带装置;计算机系统存储器或随机存取存储器,诸如DRAM、DDRRAM、SRAM、EDORAM,兰巴斯(Rambus)RAM等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的第一计算机系统中,或者可以位于不同的第二计算机系统中,第二计算机系统通过网络(诸如因特网)连接到第一计算机系统。第二计算机系统可以提供程序指令给第一计算机用于执行。术语“存储介质”可以包括可以驻留在不同位置中(例如在通过网络连接的不同计算机系统中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。
当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的可见性刷新操作,还可以执行本申请任意实施例所提供的可见性刷新方法中的相关操作。
本申请实施例提供了一种智能终端,该智能终端中可集成本申请实施例提供的可见性刷新装置。图5为本申请实施例提供的一种智能终端的结构示意图。智能终端500可以包括:存储器501,处理器502及存储在存储器501上并可在处理器502运行的计算机程序,所述处理器502执行所述计算机程序时实现如本申请实施例所述的可见性刷新方法。
本申请实施例提供的智能终端,在可见性刷新时进行Activity堆栈的可见性刷新操作过程中,将Activity拥有的SurfaceView的屏幕占用属性考虑进来,能够更加准确地确定下一个Activity的可见属性,提升可见性刷新效率。
图6为本申请实施例提供的另一种智能终端的结构示意图,该智能终端可以包括:壳体(图中未示出)、存储器601、中央处理器(central processing unit,CPU)602(又称处理器,以下简称CPU)、电路板(图中未示出)和电源电路(图中未示出)。所述电路板安置在所述壳体围成的空间内部;所述CPU602和所述存储器601设置在所述电路板上;所述电源电路,用于为所述智能终端的各个电路或器件供电;所述存储器601,用于存储可执行程序代码;所述CPU602通过读取所述存储器601中存储的可执行程序代码来运行与所述可执行程序代码对应的计算机程序,以实现以下步骤:
在进行Activity堆栈的可见性刷新操作过程中,确定当前Activity的可见属性为可见时,获取所述当前Activity的屏幕占用属性,其中,所述屏幕占用属性包括全面覆盖和部分覆盖;
在所述当前Activity的屏幕占用属性为部分覆盖时,判断所述当前Activity是否拥有SurfaceView;
在确定所述当前Activity拥有SurfaceView,且所述SurfaceView的屏幕占用属性为全面覆盖时,确定下一个Activity的可见属性为不可见,并结束针对所述Activity堆栈的可见性刷新操作。
所述智能终端还包括:外设接口603、RF(Radio Frequency,射频)电路605、音频电路606、扬声器611、电源管理芯片608、输入/输出(I/O)子系统609、其他输入/控制设备610、触摸屏612、其他输入/控制设备610以及外部端口604,这些部件通过一个或多个通信总线或信号线607来通信。
应该理解的是,图示智能终端600仅仅是智能终端的一个范例,并且智能终端600可以具有比图中所示出的更多的或者更少的部件,可以组合两个或更多的部件,或者可以具有不同的部件配置。图中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
下面就本实施例提供的用于可见性刷新的智能终端进行详细的描述,该智能终端以手机为例。
存储器601,所述存储器601可以被CPU602、外设接口603等访问,所述存储器601可以包括高速随机存取存储器,还可以包括非易失性存储器,例如一个或多个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
外设接口603,所述外设接口603可以将设备的输入和输出外设连接到CPU602和存储器601。
I/O子系统609,所述I/O子系统609可以将设备上的输入输出外设,例如触摸屏612和其他输入/控制设备610,连接到外设接口603。I/O子系统609可以包括显示控制器6091和用于控制其他输入/控制设备610的一个或多个输入控制器6092。其中,一个或多个输入控制器6092从其他输入/控制设备610接收电信号或者向其他输入/控制设备610发送电信号,其他输入/控制设备610可以包括物理按钮(按压按钮、摇臂按钮等)、拨号盘、滑动开关、操纵杆、点击滚轮。值得说明的是,输入控制器6092可以与以下任一个连接:键盘、红外端口、USB接口以及诸如鼠标的指示设备。
触摸屏612,所述触摸屏612是用户智能终端与用户之间的输入接口和输出接口,将可视输出显示给用户,可视输出可以包括图形、文本、图标、视频等。
I/O子系统609中的显示控制器6091从触摸屏612接收电信号或者向触摸屏612发送电信号。触摸屏612检测触摸屏上的接触,显示控制器6091将检测到的接触转换为与显示在触摸屏612上的用户界面对象的交互,即实现人机交互,显示在触摸屏612上的用户界面对象可以是运行游戏的图标、联网到相应网络的图标等。值得说明的是,设备还可以包括光鼠,光鼠是不显示可视输出的触摸敏感表面,或者是由触摸屏形成的触摸敏感表面的延伸。
RF电路605,主要用于建立手机与无线网络(即网络侧)的通信,实现手机与无线网络的数据接收和发送。例如收发短信息、电子邮件等。具体地,RF电路605接收并发送RF信号,RF信号也称为电磁信号,RF电路605将电信号转换为电磁信号或将电磁信号转换为电信号,并且通过该电磁信号与通信网络以及其他设备进行通信。RF电路605可以包括用于执行这些功能的已知电路,其包括但不限于天线系统、RF收发机、一个或多个放大器、调谐器、一个或多个振荡器、数字信号处理器、CODEC(COder-DECoder,编译码器)芯片组、用户标识模块(Subscriber Identity Module,SIM)等等。
音频电路606,主要用于从外设接口603接收音频数据,将该音频数据转换为电信号,并且将该电信号发送给扬声器611。
扬声器611,用于将手机通过RF电路605从无线网络接收的语音信号,还原为声音并向用户播放该声音。
电源管理芯片608,用于为CPU602、I/O子系统及外设接口所连接的硬件进行供电及电源管理。
上述实施例中提供的可见性刷新装置、存储介质及智能终端可执行本申请任意实施例所提供的可见性刷新方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的可见性刷新方法。
注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。

Claims (10)

1.一种可见性刷新方法,其特征在于,包括:
在进行Activity堆栈的可见性刷新操作过程中,确定当前Activity的可见属性为可见时,获取所述当前Activity的屏幕占用属性,其中,所述屏幕占用属性包括全面覆盖和部分覆盖;
在所述当前Activity的屏幕占用属性为部分覆盖时,判断所述当前Activity是否拥有SurfaceView;
在确定所述当前Activity拥有SurfaceView,且所述SurfaceView的屏幕占用属性为全面覆盖时,确定下一个Activity的可见属性为不可见,并结束针对所述Activity堆栈的可见性刷新操作。
2.根据权利要求1所述的方法,其特征在于,还包括:
在确定所述当前Activity拥有SurfaceView,且所述SurfaceView的屏幕占用属性为部分覆盖时,确定下一个Activity的可见属性为可见,并继续针对所述Activity堆栈的可见性刷新操作。
3.根据权利要求1所述的方法,其特征在于,所述获取所述当前Activity的屏幕占用属性,包括:
获取所述当前Activity的透明属性以及屏幕占用面积信息;
当所述当前Activity的透明属性为透明或半透明,或所述屏幕占用面积小于屏幕面积时,确定所述当前Activity的屏幕占用属性为部分覆盖;当所述当前Activity的透明属性为不透明,且所述屏幕占用面积等于屏幕面积时,确定所述当前Activity的屏幕占用属性为全面覆盖。
4.根据权利要求3所述的方法,其特征在于,当所述屏幕占用面积信息中包含浮动窗口属性时,确定所述屏幕占用面积小于屏幕面积。
5.根据权利要求1-4任一所述的方法,其特征在于,所述判断所述当前Activity是否拥有SurfaceView,包括:
通过Activity Manager Service查找所述当前Activity对应的ActivityRecord,当所述ActivityRecord包含SurfaceView对应的属性信息时,确定所述当前Activity是否拥有SurfaceView。
6.根据权利要求5所述的方法,其特征在于,还包括:
读取所述ActivityRecord中包含的SurfaceView对应的属性信息;
根据所读取的属性信息中的尺寸信息确定所述SurfaceView的屏幕占用属性是否为全面覆盖。
7.根据权利要求6所述的方法,其特征在于,当所述ActivityRecord中包含多个SurfaceView时,所述读取所述ActivityRecord中包含的SurfaceView对应的属性信息,包括:
对于每个SurfaceView,读取所述ActivityRecord中包含的当前SurfaceView的属性信息中的尺寸信息和位置信息,根据尺寸信息和位置信息确定所述当前SurfaceView对应的矩形区域;
所述根据所读取的属性信息中的尺寸信息确定所述SurfaceView的屏幕占用属性是否为全面覆盖,包括:
将多个SurfaceView分别对应的矩形区域进行求或操作,得到所述多个SurfaceView对应的屏幕占用总区域,当所述屏幕占用总区域的面积等于所述屏幕面积时,确定所述多个SurfaceView的屏幕占用属性为全面覆盖。
8.一种可见性刷新装置,其特征在于,包括:
屏幕占用属性获取模块,用于在进行Activity堆栈的可见性刷新操作过程中,确定当前Activity的可见属性为可见时,获取所述当前Activity的屏幕占用属性,其中,所述屏幕占用属性包括全面覆盖和部分覆盖;
判断模块,用于在所述当前Activity的屏幕占用属性为部分覆盖时,判断所述当前Activity是否拥有SurfaceView;
可见属性确定模块,用于在确定所述当前Activity拥有SurfaceView,且所述SurfaceView的屏幕占用属性为全面覆盖时,确定下一个Activity的可见属性为不可见,并结束针对所述Activity堆栈的可见性刷新操作。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的可见性刷新方法。
10.一种智能终端,其特征在于,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-7任一所述的可见性刷新方法。
CN201810129339.XA 2018-02-08 2018-02-08 可见性刷新方法、装置、存储介质及智能终端 Expired - Fee Related CN108399090B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810129339.XA CN108399090B (zh) 2018-02-08 2018-02-08 可见性刷新方法、装置、存储介质及智能终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810129339.XA CN108399090B (zh) 2018-02-08 2018-02-08 可见性刷新方法、装置、存储介质及智能终端

Publications (2)

Publication Number Publication Date
CN108399090A true CN108399090A (zh) 2018-08-14
CN108399090B CN108399090B (zh) 2021-04-27

Family

ID=63095551

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810129339.XA Expired - Fee Related CN108399090B (zh) 2018-02-08 2018-02-08 可见性刷新方法、装置、存储介质及智能终端

Country Status (1)

Country Link
CN (1) CN108399090B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110096329A (zh) * 2019-05-09 2019-08-06 Oppo广东移动通信有限公司 一种显示内容控制方法、电子装置及计算机可读存储介质

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1777611A1 (en) * 2005-10-11 2007-04-25 Research In Motion Limited System and method for organizing application indicators on an electronic device
CN102651001A (zh) * 2011-02-28 2012-08-29 腾讯科技(深圳)有限公司 一种图片浏览的方法及装置
CN103970526A (zh) * 2013-11-21 2014-08-06 成都力淼科技有限公司 一种基于Android单Activity的视图切换技术
CN104020849A (zh) * 2014-05-30 2014-09-03 爱培科科技开发(深圳)有限公司 基于Windows CE的多程序同时显示方法及系统
CN104537971A (zh) * 2014-12-12 2015-04-22 惠州Tcl移动通信有限公司 一种基于移动终端的显示屏刷新方法、系统及移动终端
CN104822077A (zh) * 2014-12-04 2015-08-05 腾讯科技(北京)有限公司 客户端的运行方法及客户端
CN105278808A (zh) * 2015-09-24 2016-01-27 上海智臻智能网络科技股份有限公司 用于经由人机交互界面推送页面的方法和装置
CN105528217A (zh) * 2015-12-24 2016-04-27 北京白鹭时代信息技术有限公司 一种基于显示列表的局部刷新方法及装置
CN106201215A (zh) * 2016-07-22 2016-12-07 深圳天珑无线科技有限公司 一种基于终端的分屏显示方法及终端
CN106919402A (zh) * 2017-03-10 2017-07-04 广东欧珀移动通信有限公司 一种移动终端的控制方法、装置及移动终端
CN107357623A (zh) * 2017-07-20 2017-11-17 上海金大师网络科技有限公司 一种基于多图层的局部绘制方法及系统
CN107506200A (zh) * 2017-09-12 2017-12-22 深圳市金立通信设备有限公司 一种屏幕内容切换方法、终端及计算机可读存储介质

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1777611A1 (en) * 2005-10-11 2007-04-25 Research In Motion Limited System and method for organizing application indicators on an electronic device
CN102651001A (zh) * 2011-02-28 2012-08-29 腾讯科技(深圳)有限公司 一种图片浏览的方法及装置
CN103970526A (zh) * 2013-11-21 2014-08-06 成都力淼科技有限公司 一种基于Android单Activity的视图切换技术
CN104020849A (zh) * 2014-05-30 2014-09-03 爱培科科技开发(深圳)有限公司 基于Windows CE的多程序同时显示方法及系统
CN104822077A (zh) * 2014-12-04 2015-08-05 腾讯科技(北京)有限公司 客户端的运行方法及客户端
CN104537971A (zh) * 2014-12-12 2015-04-22 惠州Tcl移动通信有限公司 一种基于移动终端的显示屏刷新方法、系统及移动终端
CN105278808A (zh) * 2015-09-24 2016-01-27 上海智臻智能网络科技股份有限公司 用于经由人机交互界面推送页面的方法和装置
CN105528217A (zh) * 2015-12-24 2016-04-27 北京白鹭时代信息技术有限公司 一种基于显示列表的局部刷新方法及装置
CN106201215A (zh) * 2016-07-22 2016-12-07 深圳天珑无线科技有限公司 一种基于终端的分屏显示方法及终端
CN106919402A (zh) * 2017-03-10 2017-07-04 广东欧珀移动通信有限公司 一种移动终端的控制方法、装置及移动终端
CN107357623A (zh) * 2017-07-20 2017-11-17 上海金大师网络科技有限公司 一种基于多图层的局部绘制方法及系统
CN107506200A (zh) * 2017-09-12 2017-12-22 深圳市金立通信设备有限公司 一种屏幕内容切换方法、终端及计算机可读存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110096329A (zh) * 2019-05-09 2019-08-06 Oppo广东移动通信有限公司 一种显示内容控制方法、电子装置及计算机可读存储介质
CN110096329B (zh) * 2019-05-09 2022-04-01 Oppo广东移动通信有限公司 一种显示内容控制方法、电子装置及计算机可读存储介质

Also Published As

Publication number Publication date
CN108399090B (zh) 2021-04-27

Similar Documents

Publication Publication Date Title
CN106791212B (zh) 一种移动终端刷新率的控制方法、装置及移动终端
CN106933328B (zh) 一种移动终端帧率的控制方法、装置及移动终端
CN106951055B (zh) 一种移动终端的显示控制方法、装置及移动终端
CN108363593A (zh) 应用程序预加载方法、装置、存储介质及终端
US20170235435A1 (en) Electronic device and method of application data display therefor
CN108647052A (zh) 应用程序预加载方法、装置、存储介质及终端
CN108762843A (zh) 应用程序的预加载方法、装置、存储介质及智能终端
CN108804157A (zh) 应用程序预加载方法、装置、存储介质及终端
CN108027706A (zh) 一种应用界面显示方法以及终端设备
CN106874017B (zh) 一种移动终端的显示场景识别方法、装置及移动终端
CN106933587A (zh) 一种图层绘制控制方法、装置及移动终端
CN108628645A (zh) 应用程序预加载方法、装置、存储介质及终端
CN111124668B (zh) 内存释放方法、装置、存储介质及终端
CN108829456A (zh) 应用程序预加载方法、装置、存储介质及终端
CN108595224A (zh) 应用程序提示方法、装置、存储介质及终端
CN108829457A (zh) 应用程序预测模型更新方法、装置、存储介质及终端
US11138956B2 (en) Method for controlling display of terminal, storage medium, and electronic device
CN108205408B (zh) 消息展示方法及装置
CN102819416A (zh) 一种实现组件内容显示的方法和装置
CN106776259B (zh) 一种移动终端帧率检测方法、装置及移动终端
CN108647056A (zh) 应用程序预加载方法、装置、存储介质及终端
CN106792076A (zh) 一种进行信息展示的方法、装置和系统
CN108762844A (zh) 应用程序预加载方法、装置、存储介质及终端
CN110147186A (zh) 一种应用的控制方法及终端设备
CN109522482A (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
CB02 Change of applicant information

Address after: Changan town in Guangdong province Dongguan 523860 usha Beach Road No. 18

Applicant after: GUANGDONG OPPO MOBILE TELECOMMUNICATIONS Corp.,Ltd.

Address before: Changan town in Guangdong province Dongguan 523860 usha Beach Road No. 18

Applicant before: GUANGDONG OPPO MOBILE TELECOMMUNICATIONS Corp.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20210427

CF01 Termination of patent right due to non-payment of annual fee