CN114489898A - 悬浮窗的处理方法、电子设备及计算机可读存储介质 - Google Patents

悬浮窗的处理方法、电子设备及计算机可读存储介质 Download PDF

Info

Publication number
CN114489898A
CN114489898A CN202210074495.7A CN202210074495A CN114489898A CN 114489898 A CN114489898 A CN 114489898A CN 202210074495 A CN202210074495 A CN 202210074495A CN 114489898 A CN114489898 A CN 114489898A
Authority
CN
China
Prior art keywords
floating window
page
window view
view
application program
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
Application number
CN202210074495.7A
Other languages
English (en)
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.)
Alibaba China Co Ltd
Original Assignee
Alibaba China Co 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 Alibaba China Co Ltd filed Critical Alibaba China Co Ltd
Priority to CN202210074495.7A priority Critical patent/CN114489898A/zh
Publication of CN114489898A publication Critical patent/CN114489898A/zh
Pending legal-status Critical Current

Links

Images

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
    • 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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

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

Abstract

本申请提供一种悬浮窗的处理方法、电子设备及计算机可读存储介质。本申请的方法,在应用程序中需要通过悬浮窗展示信息时,通过根据应用程序的全局上下文信息来创建悬浮窗视图,并在初始化第一悬浮窗视图的显示配置信息后,将创建的悬浮窗视图添加到当前显示的页面上,通过页面级别的视图操作实现悬浮窗的展示,来代替传统方案中通过全局Window的视图操作实现悬浮窗的功能,不需要申请***悬浮窗的权限,在需要展示悬浮窗时即可进行悬浮窗展示,能够保证应用程序的悬浮窗相关功能正常使用,提高应用程序的可用性和可靠性。

Description

悬浮窗的处理方法、电子设备及计算机可读存储介质
技术领域
本申请涉及人工智能技术,尤其涉及一种悬浮窗的处理方法、电子设备及计算机可读存储介质。
背景技术
在应用程序(Application,简称APP)开发过程中,往往会需要用到全局统一展示的功能逻辑,如开启直播间小窗、提供全局消息入口、发布APP统一公告等,可以通过全局统一的悬浮窗来实现上述全局统一展示的功能逻辑。
传统的在页面中展示悬浮窗的方案中,通常通过在***的配置文件(如Android***的AndroidManifest.xml)中给应用程序注册***悬浮窗的权限,通过向用户发起展示悬浮窗的权限申请,在获得用户授权应用程序得到***悬浮窗的权限后,应用程序可以实现悬浮窗功能。但是,应用程序是否能够获得***悬浮窗的权限,强依赖与用户授权,用户未授权会导致应用程序的相关功能无法正常使用,另外部分手机厂商对***悬浮窗权限做了默认禁用的处理,导致应用程序的相关功能无法正常使用。
发明内容
本申请提供一种悬浮窗的处理方法、电子设备及计算机可读存储介质。
一方面,本申请提供一种悬浮窗的处理方法,包括:
响应于应用程序中需要通过悬浮窗显示信息,根据所述应用程序的全局上下文信息,创建第一悬浮窗视图,所述全局上下文信息是指有效范围为所述应用程序的上下文信息;
初始化所述第一悬浮窗视图的显示配置信息;
将所述第一悬浮窗视图添加到当前显示的第一页面上。
另一方面,本申请提供一种悬浮窗的处理装置,包括:
悬浮窗创建模块,用于响应于应用程序中需要通过悬浮窗显示信息,根据所述应用程序的全局上下文信息,创建第一悬浮窗视图,所述全局上下文信息是指有效范围为所述应用程序的上下文信息;
悬浮窗初始化模块,用于初始化所述第一悬浮窗视图的显示配置信息;
悬浮窗控制模块,用于将所述第一悬浮窗视图添加到当前显示的第一页面上。
另一方面,本申请提供一种电子设备,包括:
处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现上述所述的悬浮窗的处理方法。
另一方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现上述所述的悬浮窗的处理方法。
本申请提供的悬浮窗的处理方法、电子设备及计算机可读存储介质,在应用程序中需要通过悬浮窗展示信息时,通过根据应用程序的全局上下文信息来创建悬浮窗视图,并在初始化第一悬浮窗视图的显示配置信息后,将创建的悬浮窗视图添加到当前显示的页面上,通过页面级别的视图操作实现悬浮窗的展示,来代替传统方案中通过全局Window的视图操作实现悬浮窗的功能,不需要申请***悬浮窗的权限,在需要展示悬浮窗时即可进行悬浮窗展示,能够保证应用程序的悬浮窗相关功能正常使用,提高应用程序的可用性和可靠性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请提供的传统悬浮窗的处理方案的悬浮窗展示的一种示例流程图;
图2为本申请一实施例提供的悬浮窗的处理方法流程图;
图3为本申请另一实施例提供的悬浮窗的处理方法流程图;
图4为本申请另一实施例提供的悬浮窗的处理方法流程图;
图5为本申请一实施例提供的悬浮窗的处理装置的结构示意图;
图6为本申请一示例实施例提供的电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
首先对本申请所涉及的名词进行解释:
悬浮窗:APP开发中悬浮在页面上方的视图窗口。
权限申请:Android***为保护用户而向APP开发者添加的针对敏感API(APPlication Programming Interface,应用程序接口)的调用阻拦,需要开发者向用户发起申请,由用户决定是否授权允许开发者调用敏感API。
另外,术语“第一”、“第二”、“第三”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。在以下各实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。
本申请提供的悬浮窗的处理方法,应用于需要全局统一的悬浮窗来实现全局统一展示的功能逻辑的应用程序中,应用程序中通过全局统一的悬浮窗来实现开启直播间小窗、提供全局消息入口、发布APP统一公告等功能。
传统的在页面中展示悬浮窗的方案中,通常通过在***的配置文件(如Android***的AndroidManifest.xml)中给应用程序注册***悬浮窗的权限,通过向用户发起展示悬浮窗的权限申请,在获得用户授权应用程序得到***悬浮窗的权限后,应用程序可以实现悬浮窗功能。但是,应用程序是否能够获得***悬浮窗的权限,强依赖与用户授权,用户未授权会导致应用程序的相关功能无法正常使用,另外部分手机厂商对***悬浮窗权限做了默认禁用的处理,导致应用程序的相关功能无法正常使用。
示例性地,传统悬浮窗的处理方案的悬浮窗展示的一种示例流程如图1所示,在需要展示悬浮窗时判断应用程序中是否注册***悬浮窗权限,若未注册***悬浮窗权限,则无法展示悬浮窗;若注册了***悬浮窗权限,需要获取用户允许展示悬浮窗的授权,若获得用户授权则展示悬浮窗;若未获得用户授权,则无法展示悬浮窗。
为了保证应用程序能够正常展示悬浮窗,一种方案中通过在***的基类(如Android***中的BaseActivity)中做统一处理,来进行悬浮窗的创建和维护。但是,基类需要预先感知悬浮窗依赖的页面,针对悬浮窗依赖的页面做悬浮窗展示或隐藏的控制,或提供动态替换悬浮窗的逻辑。悬浮窗依赖的每个页面都需要创建同样的悬浮窗视图,造成不必要的内存占用,同时还需要对多个悬浮窗视图内部的状态数据分别进行维护,逻辑复杂。
另外,本申请提供的悬浮窗的处理方法可以应用于基于安卓(Android)***或者其他***开发的应用程序,为便于理解,下文中以基于Android***的应用程序为例进行示例性地说明,本领域技术人员应该理解将本实施例的方案扩展至基于其他类型的***开发的应用程序中产生的新方案,也在本申请的范围内。
本申请提供的悬浮窗的处理方法,通过在应用程序中需要通过悬浮窗展示信息时,通过根据应用程序的全局上下文信息来创建悬浮窗视图,并将创建的悬浮窗视图添加到当前显示的页面上,通过Activity级别的视图操作实现悬浮窗的展示,不需要申请***悬浮窗的权限,在需要展示悬浮窗时即可进行悬浮窗展示,能够保证应用程序的悬浮窗相关功能正常使用,提高应用程序的可用性和可靠性。
进一步地,本申请提供的悬浮窗的处理方法,通过维护一个静态全局变量,存储应用程序当前显示的悬浮窗视图,仅维护一份静态的悬浮窗视图,可以减少不必要的悬浮窗视图存储对内存的占用;并且,通过监听页面切换的事件,在页面切换发生后自动启动将当前显示的悬浮窗视图从上一页面上抠出并添加到切换后的页面中的处理,使得悬浮窗视图继续在切换后的页面上显示,这样,只需底层开发人员开发监听页面切换事件及将当前显示的悬浮窗视图从上一页面上抠出并添加到切换后的页面中的程序代码,无需APP开发者针对不同页面手动开发页面切换时将悬浮窗视图从上一页面上抠出并添加到下一页面的程序代码,能够降低应用程序开发的复杂度,提高应用程序开发的效率。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图2为本申请一实施例提供的悬浮窗的处理方法流程图。本实施例提供的悬浮窗的处理方法具体可以应用于具有悬浮窗展示功能的应用程序的电子设备,该电子设备可以是智能手机、平板电脑等终端设备,或者是应用程序对应的服务器等,在其他实施例中,电子设备还可以采用其他设备实现,本实施例此处不做具体限定。
如图2所示,该方法具体步骤如下:
步骤S201、响应于应用程序中需要通过悬浮窗显示信息,根据应用程序的全局上下文信息,创建第一悬浮窗视图,全局上下文信息是指有效范围为应用程序的上下文信息。
在实际应用中,应用程序中何时需通过悬浮窗显示信息可以根据应用程序的功能需求确定。
示例性地,在用户在应用程序的客户端上进行发布通知消息的操作时,客户端向应用程序发送通过悬浮窗显示通知消息的请求。响应于通过悬浮窗显示信息的请求,创建第一悬浮窗视图,该第一悬浮窗视图用于显示通知消息。
示例性地,在应用程序中需要开启悬浮窗播放视频流时,应用程序创建第一悬浮窗视图,该第一悬浮窗视图用于播放视频流。
例如,在具有直播功能的应用程序中,直播小窗可以使用悬浮窗技术实现,当需要开启直播小窗时,创建第一悬浮窗视图,该第一悬浮窗视图用于播放直播视频流。
本实施例中,考虑到全局统一的悬浮窗的生命周期要长于页面的生命周期,在创建悬浮窗视图时,使用应用程序的全局上下文信息来创建悬浮窗视图,来代替常规的使用页面上下文信息来创建悬浮窗视图,能够避免页面切换时导致内存泄露,提高应用程序的可靠性。
步骤S202、初始化第一悬浮窗视图的显示配置信息。
在创建第一悬浮窗视图之后,初始化第一悬浮窗视图的显示配置信息。其中,显示配置信息包括悬浮窗视图要显示的内容信息,以及悬浮窗视图的样式、布局等参数信息。
示例性地,悬浮窗视图的参数信息可以包括显示位置、窗口大小、背景颜色等。
步骤S203、将第一悬浮窗视图添加到当前显示的第一页面上。
在完成第一悬浮窗视图的显示配置信息的初始化之后,将第一悬浮窗视图添加到当前显示的第一页面上,实现悬浮窗的显示。
本实施例中,在应用程序中需要通过悬浮窗展示信息时,通过根据应用程序的全局上下文信息来创建悬浮窗视图,并在初始化第一悬浮窗视图的显示配置信息后,将创建的悬浮窗视图添加到当前显示的页面上,通过页面级别的视图操作实现悬浮窗的展示,来代替传统方案中通过全局Window的视图操作实现悬浮窗的功能,不需要申请***悬浮窗的权限,在需要展示悬浮窗时即可进行悬浮窗展示,能够保证应用程序的悬浮窗相关功能正常使用,提高应用程序的可用性和可靠性。
图3为本申请另一实施例提供的悬浮窗的处理方法流程图。在上述图2对应实施例的基础上,本实施例中,存储应用程序中当前显示的悬浮窗视图的信息,作为应用程序中唯一一个全局的悬浮窗视图。
为了区分新创建的悬浮窗视图和应用程序中已显示的悬浮窗视图,用第一悬浮窗视图指代新创建的悬浮窗视图,用第二悬浮窗视图指代应用程序中当前显示的悬浮窗视图,也即是存储的悬浮窗视图信息。
在将新创建的第一悬浮窗视图添加到当前显示的页面上之前,若应用程序中存在正在显示的第二悬浮窗视图,且第二悬浮窗视图与第一悬浮窗视图不是同一个视图,则将第二悬浮窗视图从第一页面上移除之后,将第一悬浮窗视图添加到当前显示的第一页面上,实现新创建的第一悬浮窗视图的展示。
如图3所示,该方法具体步骤如下:
步骤S301、响应于应用程序中需要通过悬浮窗显示信息,根据应用程序的全局上下文信息,创建第一悬浮窗视图。
其中,全局上下文信息是指有效范围为应用程序的上下文信息。
在实际应用中,应用程序中何时需通过悬浮窗显示信息可以根据应用程序的功能需求确定。
示例性地,在用户在应用程序的客户端上进行发布通知消息的操作时,客户端向应用程序发送通过悬浮窗显示通知消息的请求。响应于通过悬浮窗显示信息的请求,创建第一悬浮窗视图,该第一悬浮窗视图用于显示通知消息。
示例性地,在应用程序中需要开启悬浮窗播放视频流时,应用程序创建第一悬浮窗视图,该第一悬浮窗视图用于播放视频流。
例如,在具有直播功能的应用程序中,直播小窗可以使用悬浮窗技术实现,当需要开启直播小窗时,创建第一悬浮窗视图,该第一悬浮窗视图用于播放直播视频流。
本实施例中,考虑到全局统一的悬浮窗的生命周期要长于页面的生命周期,在创建悬浮窗视图时,使用应用程序的全局上下文信息来创建悬浮窗视图,来代替常规的使用页面上下文信息来创建悬浮窗视图,能够避免页面切换时导致内存泄露,提高应用程序的可靠性。
例如,以基于Android***的应用程序为例,可以通过如下代码实现根据应用程序的全局上下文信息创建第一悬浮窗视图:
TextView floatView=new TextView(this.getApplicationContext());
其中,floatView为新创建的悬浮窗视图,new TextView()为Android***中用于创建悬浮窗视图的函数,this.getApplicationContext()为用于获取当前页面的全局上下文信息,也即全局context。
步骤S302、初始化第一悬浮窗视图的显示配置信息。
在创建第一悬浮窗视图之后,初始化第一悬浮窗视图的显示配置信息。其中,显示配置信息包括悬浮窗视图要显示的内容信息,以及悬浮窗视图的样式、布局等参数信息。
示例性地,悬浮窗视图的参数信息可以包括显示位置、窗口大小、背景颜色等。
可选地,可以将悬浮窗的显示处理封装为一个指定方法,对外提供指定方法,APP开发者可以通过调用指定方法即可快速实现悬浮窗显示的能力,无需APP开发者针对不同页面多次重复手动编写悬浮窗显示的处理逻辑,能够提高应用程序的开发效率。
例如,以基于Android***的应用程序为例,可以通过如下代码实现悬浮窗视图的创建、初始化和显示:
Figure BDA0003483432870000071
Figure BDA0003483432870000081
步骤S303、根据存储的应用程序中当前显示的第二悬浮窗视图的信息,确定是否存在第二悬浮窗视图。
本实施例中,存储应用程序中当前显示的悬浮窗视图的信息,作为应用程序中唯一一个全局的悬浮窗视图。
在完成第一悬浮窗视图的显示配置信息的初始化之后,将第一悬浮窗视图添加到当前显示的页面上之前,获取已存储的应用程序中当前显示的第二悬浮窗视图的信息;根据存储的应用程序中当前显示的第二悬浮窗视图的信息确定应用程序中是否存在正在显示的第二悬浮窗视图。
若确定存在第二悬浮窗视图,并且确定第二悬浮窗视图与第一悬浮窗视图不是同一个视图,则需先执行步骤S304将第二悬浮窗视图从第一页面上移除,然后执行步骤S305将新创建的第一悬浮窗视图添加到第一页面上,实现悬浮窗视图的更换显示。
若确定不存在第二悬浮窗视图,则直接执行步骤S305,将新创建的第一悬浮窗视图添加到第一页面上,实现新建的悬浮窗视图的显示。
若确定存在第二悬浮窗视图,并且确定第二悬浮窗视图与第一悬浮窗视图是同一个视图,说明当前正在显示的正是第一悬浮窗视图(也即第二悬浮窗视图),无需重复添加第一悬浮窗视图,因此不进行后续的悬浮窗的显示处理。
可选地,可以使用全局静态变量存储应用程序中当前显示的第二悬浮窗视图的信息。若全局静态变量为空,则确定不存在第二悬浮窗视图。若全局静态变量不为空,则确定存在第二悬浮窗视图。
进一步地,在应用程序中所显示的悬浮窗视图发送变换时,更新所存储的应用程序中当前显示的第二悬浮窗视图的信息,使得所存储的悬浮窗视图的信息是应用程序中当前显示的第二悬浮窗视图的信息。
步骤S304、根据存储的应用程序中当前显示的第二悬浮窗视图的信息,若存在第二悬浮窗视图,且第二悬浮窗视图与第一悬浮窗视图不是同一个视图,则将第二悬浮窗视图从第一页面上移除。
若确定存在第二悬浮窗视图,并且确定第二悬浮窗视图与第一悬浮窗视图不是同一个视图,则该步骤中先将第二悬浮窗视图从第一页面上移除,然后执行步骤S305将新创建的第一悬浮窗视图添加到第一页面上,实现悬浮窗视图的更换显示。
可选地,该步骤中将第二悬浮窗视图从第一页面上移除,可以采用如下方式实现:
确定第二悬浮窗视图的父控件;将第二悬浮窗视图从父控件上移除。
步骤S305、将第一悬浮窗视图添加到当前显示的第一页面上。
该步骤中,通过调用***提供的向页面添加视图的通用API,来实现将第一悬浮窗视图添加到当前显示的第一页面上。
例如,以基于Android***的应用程序为例,可以通过如下代码实现将第一悬浮窗视图floatView添加到当前显示的第一页面activity上:
activity.addContentView(currentFloatView=floatView,layoutParams);
其中,layoutParams为第一悬浮窗视图floatView的显示配置信息。
可选地,若第一悬浮窗视图的显示配置信息为空,可以采用默认的显示配置信息来显示第一悬浮窗视图。其中,悬浮窗的默认的显示配置信息可以根据应用程序的实际应用场景和需求进行设置和调整,此处不做具体限定。
本实施例中,为避免内存泄漏,要求悬浮窗视图使用应用程序全局上下文信息。可选地,在将第一悬浮窗视图添加到当前显示的第一页面上之前,可以验证第一悬浮窗视图的上下文信息是否是全局上下文信息;若第一悬浮窗视图的上下文信息不是全局上下文信息,则输出异常提示信息,以提高应用程序的健壮性和可靠性。
一种可选地实施方式中,通过监听页面切换的事件,在页面切换发生后自动启动将当前显示的悬浮窗视图从上一页面上抠出并添加到切换后的页面中的处理,使得悬浮窗视图继续在切换后的页面上显示,这样,只需底层开发人员开发监听页面切换事件及将当前显示的悬浮窗视图从上一页面上抠出并添加到切换后的页面中的程序代码,无需APP开发者针对不同页面手动开发页面切换时将悬浮窗视图从上一页面上抠出并添加到下一页面的程序代码,能够降低应用程序开发的复杂度,提高应用程序开发的效率。
如图4所示,本实施例提供的悬浮窗的处理方法还可以包括如下步骤:
步骤S401、检测页面切换的事件。
本实施例中,可以实时地检测应用程序中发生的页面切换的事件。
示例性地,可以通过实时检测应用程序中切换页面的操作,或者通过监听应用程序中页面的进入事件实现,或者还可以通过其他发现页面切换的行为的方法实现,此处不做具体限定。
可选地,该步骤具体可以采用如下方式实现:
监听页面进入事件;当监听到页面进入事件时,确定检测到页面切换的事件,确定新进入的页面,并将新进入的页面作为切换后的页面。
示例性地,通过使用Application的registerActivityLifecycleCallbacks来监听页面(activity)切换事件,能够实现页面切换的事件的监听。
步骤S402、响应于检测到页面切换的事件,根据所存储的第二悬浮窗视图的信息,确定第二悬浮窗视图所在的第二页面。
在检测到页面切换的事件之后,获取已存储的第二悬浮窗视图的信息,根据已存储的第二悬浮窗视图的信息,可以确定应用程序中当前正在显示的第二悬浮窗视图所显示在的第二页面。
在确定应用程序中当前正在显示的第二悬浮窗视图所显示在的第二页面之后,通过比较第二页面和切换后的页面,可以确定页面切换后的页面是不是第二页面。
如果切换后的页面不是第二页面,通过执行步骤S403-S404,将第二悬浮窗视图从第二页面抠出,并显示到切换后的页面中。
如果切换后的页面是第二页面,则切换后的页面以及显示了第二悬浮窗视图,可能存在悬浮窗视图的重复显示,不做后续处理。
步骤S403、若页面切换后的页面不是第二页面,将第二悬浮窗视图从第二页面移除。
若确定切换后的页面不是第二页面,则该步骤中先将第二悬浮窗视图从所显示的第二页面上移除,然后执行步骤S404将第二悬浮窗视图添加到切换后的页面上。
可选地,该步骤具体可以采用如下方式实现:
确定任一悬浮窗视图的父控件;将任一悬浮窗视图从父控件上移除。
步骤S404、将第二悬浮窗视图添加到切换后的页面上。
该步骤中,通过调用***提供的向页面添加视图的通用API,来实现将第二悬浮窗视图添加到切换后的页面上。
例如,以基于Android***的应用程序为例,可以通过如下代码实现将第二悬浮窗视图floatView2添加到切换后的页面activity1上:
activity1.addContentView(currentFloatView=floatView2,layoutParams2);
其中,layoutParams2为第二悬浮窗视图floatView2的显示配置信息。
可选地,若第二悬浮窗视图的显示配置信息为空,可以采用默认的显示配置信息来显示第二悬浮窗视图。其中,悬浮窗的默认的显示配置信息可以根据应用程序的实际应用场景和需求进行设置和调整,此处不做具体限定。
本实施例中,为避免内存泄漏,要求悬浮窗视图使用应用程序全局上下文信息。可选地,在将第二悬浮窗视图添加到切换后的页面上之前,可以验证第二悬浮窗视图的上下文信息是否是全局上下文信息;若第二悬浮窗视图的上下文信息不是全局上下文信息,则输出异常提示信息,以提高应用程序的健壮性和可靠性。
本实施例中,通过监听页面切换的事件,在页面切换发生后自动启动将当前显示的悬浮窗视图从上一页面上抠出并添加到切换后的页面中的处理,使得悬浮窗视图继续在切换后的页面上显示,这样,只需底层开发人员开发监听页面切换事件及将当前显示的悬浮窗视图从上一页面上抠出并添加到切换后的页面中的程序代码,无需APP开发者针对不同页面手动开发页面切换时将悬浮窗视图从上一页面上抠出并添加到下一页面的程序代码,能够降低应用程序开发的复杂度,提高应用程序开发的效率。
例如,本方案中通过监听听页面切换的事件,在页面切换发生后自动启动将当前显示的悬浮窗视图从上一页面上抠出并添加到切换后的页面中的处理,使得悬浮窗视图继续在切换后的页面上,核心代码逻辑如下:
Figure BDA0003483432870000111
Figure BDA0003483432870000121
其中,通过将悬浮窗的显示封装为show方法,对外提供一个show方法即可快速实现悬浮窗的处理能力,使得应用程序的API更加简化。show方法可以采用如下代码实现:
Figure BDA0003483432870000122
Figure BDA0003483432870000131
其中,将正在显示的悬浮窗视图currentFloatView从所在的页面移除的方法cancel(),可以采用如下代码实现:
Figure BDA0003483432870000132
Figure BDA0003483432870000141
其中,getAttachActivityOfFloatView()方法用来获取悬浮窗视图所要显示的页面(Activity)。getAttachActivityOfFloatView()方法可以采用如下代码实现:
Figure BDA0003483432870000142
其中,getActivity()用于获取当前页面,具体可以采用如下代码实现:
Figure BDA0003483432870000143
本申请提供的悬浮窗的处理方案,结合了创建全局Context的悬浮窗视图、监听Activity生命周期和利用***提供的向页面添加视图的通用API的这三个关键技术点,达到无需权限申请便能直接实现悬浮窗展示的能力。
图5为本申请一实施例提供的悬浮窗的处理装置的结构示意图。本申请实施例提供的悬浮窗的处理装置可以执行悬浮窗的处理方法实施例提供的处理流程。如图5所示,悬浮窗的处理装置50包括:悬浮窗创建模块501,悬浮窗初始化模块502和悬浮窗控制模块503。
具体地,悬浮窗创建模块501,用于响应于应用程序中需要通过悬浮窗显示信息,根据应用程序的全局上下文信息,创建第一悬浮窗视图,全局上下文信息是指有效范围为应用程序的上下文信息。
悬浮窗初始化模块502,用于初始化第一悬浮窗视图的显示配置信息。
悬浮窗控制模块503,用于将第一悬浮窗视图添加到当前显示的第一页面上。
可选地,存储应用程序中当前显示的第二悬浮窗视图的信息,悬浮窗控制模块还用于:将第一悬浮窗视图添加到当前显示的页面上之前,若存在第二悬浮窗视图,且第二悬浮窗视图与第一悬浮窗视图不是同一个视图,则将第二悬浮窗视图从第一页面上移除。
可选地,悬浮窗控制模块还用于:
检测页面切换的事件;响应于检测到页面切换的事件,根据所存储的第二悬浮窗视图的信息,确定第二悬浮窗视图所在的第二页面;若页面切换后的页面不是第二页面,将第二悬浮窗视图从第二页面移除,并将第二悬浮窗视图添加到切换后的页面上。
可选地,悬浮窗控制模块还用于:
监听页面进入事件;当监听到页面进入事件时,确定检测到页面切换的事件,确定新进入的页面,并将新进入的页面作为切换后的页面。
可选地,悬浮窗控制模块还用于:
将第一悬浮窗视图添加到当前显示的第一页面上之前,验证第一悬浮窗视图的上下文信息是否是全局上下文信息;若第一悬浮窗视图的上下文信息不是全局上下文信息,则输出异常提示信息。
可选地,悬浮窗控制模块用于将任一悬浮窗视图从任一页面上移除时,确定任一悬浮窗视图的父控件;将任一悬浮窗视图从父控件上移除。
可选地,使用全局静态变量存储应用程序中当前显示的第二悬浮窗视图的信息。
悬浮窗控制模块还用于:
若全局静态变量为空,则确定不存在第二悬浮窗视图;若全局静态变量不为空,则确定存在第二悬浮窗视图。
本申请实施例提供的装置可以具体用于执行上述任一方法实施例所提供的方法实施例,具体功能和效果此处不再赘述。
图6为本申请一示例实施例提供的电子设备的结构示意图。如图6所示,该电子设备60包括:处理器601,以及与处理器601通信连接的存储器602,存储器602存储计算机执行指令。
其中,处理器执行存储器存储的计算机执行指令,以实现上述任一方法实施例所提供的悬浮窗的处理方法,具体功能和所能实现的技术效果此处不再赘述。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现上述任一方法实施例提供的悬浮窗的处理方法。
本申请实施例还提供了一种计算机程序产品,程序产品包括:计算机程序,计算机程序存储在可读存储介质中,电子设备的至少一个处理器可以从可读存储介质读取计算机程序,至少一个处理器执行计算机程序使得电子设备执行上述任一方法实施例提供的悬浮窗的处理方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。

Claims (10)

1.一种悬浮窗的处理方法,其特征在于,包括:
响应于应用程序中需要通过悬浮窗显示信息,根据所述应用程序的全局上下文信息,创建第一悬浮窗视图,所述全局上下文信息是指有效范围为所述应用程序的上下文信息;
初始化所述第一悬浮窗视图的显示配置信息;
将所述第一悬浮窗视图添加到当前显示的第一页面上。
2.根据权利要求1所述的方法,其特征在于,存储所述应用程序中当前显示的第二悬浮窗视图的信息,所述将所述第一悬浮窗视图添加到当前显示的页面上之前,还包括:
若存在所述第二悬浮窗视图,且所述第二悬浮窗视图与所述第一悬浮窗视图不是同一个视图,则将所述第二悬浮窗视图从所述第一页面上移除。
3.根据权利要求2所述的方法,其特征在于,还包括:
检测页面切换的事件;
响应于检测到页面切换的事件,根据所存储的第二悬浮窗视图的信息,确定所述第二悬浮窗视图所在的第二页面;
若页面切换后的页面不是所述第二页面,将所述第二悬浮窗视图从所述第二页面移除,并将所述第二悬浮窗视图添加到切换后的页面上。
4.根据权利要求3所述的方法,其特征在于,所述监听页面切换的事件,包括:
监听页面进入事件;
当监听到页面进入事件时,确定检测到页面切换的事件,确定新进入的页面,并将所述新进入的页面作为切换后的页面。
5.根据权利要求1所述的方法,其特征在于,所述将所述第一悬浮窗视图添加到当前显示的第一页面上之前,还包括:
验证所述第一悬浮窗视图的上下文信息是否是全局上下文信息;
若所述第一悬浮窗视图的上下文信息不是全局上下文信息,则输出异常提示信息。
6.根据权利要求2或3所述的方法,其特征在于,将任一悬浮窗视图从任一页面上移除,包括:
确定所述任一悬浮窗视图的父控件;
将所述任一悬浮窗视图从所述父控件上移除。
7.根据权利要求1-5中任一项所述的方法,其特征在于,还包括:
使用全局静态变量存储所述应用程序中当前显示的第二悬浮窗视图的信息,
若所述全局静态变量为空,则确定不存在所述第二悬浮窗视图;
若所述全局静态变量不为空,则确定存在所述第二悬浮窗视图。
8.一种悬浮窗的处理装置,其特征在于,包括:
悬浮窗创建模块,用于响应于应用程序中需要通过悬浮窗显示信息,根据所述应用程序的全局上下文信息,创建第一悬浮窗视图,所述全局上下文信息是指有效范围为所述应用程序的上下文信息;
悬浮窗初始化模块,用于初始化所述第一悬浮窗视图的显示配置信息;
悬浮窗控制模块,用于将所述第一悬浮窗视图添加到当前显示的第一页面上。
9.一种电子设备,其特征在于,包括:
处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-7中任一项所述的方法。
CN202210074495.7A 2022-01-21 2022-01-21 悬浮窗的处理方法、电子设备及计算机可读存储介质 Pending CN114489898A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210074495.7A CN114489898A (zh) 2022-01-21 2022-01-21 悬浮窗的处理方法、电子设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210074495.7A CN114489898A (zh) 2022-01-21 2022-01-21 悬浮窗的处理方法、电子设备及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN114489898A true CN114489898A (zh) 2022-05-13

Family

ID=81471854

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210074495.7A Pending CN114489898A (zh) 2022-01-21 2022-01-21 悬浮窗的处理方法、电子设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN114489898A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115113969A (zh) * 2022-08-30 2022-09-27 北京达佳互联信息技术有限公司 一种内容显示方法、装置、设备及存储介质
CN115225950A (zh) * 2022-07-18 2022-10-21 上海哔哩哔哩科技有限公司 视频的播放控制方法和装置
CN115408096A (zh) * 2022-11-02 2022-11-29 易方信息科技股份有限公司 一种基于Android的无侵入应用内悬浮窗实现方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105630461A (zh) * 2014-10-27 2016-06-01 航天信息股份有限公司 一种android应用界面的管理方法
CN109933401A (zh) * 2019-03-22 2019-06-25 北京城市网邻信息技术有限公司 一种悬浮窗视图的展示方法及相关设备
CN112612468A (zh) * 2020-12-25 2021-04-06 北京梧桐车联科技有限责任公司 全局悬浮窗的实现方法、实现装置、终端及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105630461A (zh) * 2014-10-27 2016-06-01 航天信息股份有限公司 一种android应用界面的管理方法
CN109933401A (zh) * 2019-03-22 2019-06-25 北京城市网邻信息技术有限公司 一种悬浮窗视图的展示方法及相关设备
CN112612468A (zh) * 2020-12-25 2021-04-06 北京梧桐车联科技有限责任公司 全局悬浮窗的实现方法、实现装置、终端及存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115225950A (zh) * 2022-07-18 2022-10-21 上海哔哩哔哩科技有限公司 视频的播放控制方法和装置
CN115113969A (zh) * 2022-08-30 2022-09-27 北京达佳互联信息技术有限公司 一种内容显示方法、装置、设备及存储介质
CN115408096A (zh) * 2022-11-02 2022-11-29 易方信息科技股份有限公司 一种基于Android的无侵入应用内悬浮窗实现方法

Similar Documents

Publication Publication Date Title
CN114489898A (zh) 悬浮窗的处理方法、电子设备及计算机可读存储介质
CN105144074B (zh) 使用混合存储器设备的块存储
EP2397958A2 (en) Computing system providing normal security and high security services
CN109064538B (zh) 视图渲染方法、装置、存储介质及智能终端
CN104142858A (zh) 阻塞任务调度方法及装置
EP3089068A1 (en) Application program management method, device, terminal, and computer storage medium
CN102207896A (zh) 虚拟机崩溃文件生成技术
CN112947969B (zh) 一种页面离屏渲染方法、装置、设备和可读介质
US8984509B2 (en) Virtual machine display device, virtual machine display method, recording medium, and integrated circuit
CN103389900A (zh) 一种Android设备摄像头使用的控制方法及装置
CN103678991A (zh) 多线程处理器中的全局寄存器保护
CN109753347B (zh) 一种实现驱动的***及方法
CN108235759A (zh) 基于多操作***的输入处理方法、装置及电子设备
CN109086079A (zh) 一种存储设备挂载管理方法及装置
US20190163901A1 (en) Computer device and method of identifying whether container behavior thereof is abnormal
KR20190032861A (ko) 전자 장치 및 그의 제어 방법
CN109271211A (zh) 应用程序的分身方法、装置、设备和介质
CN108345496B (zh) 一种运行应用程序的方法及装置
CN113467981A (zh) 异常处理的方法和装置
CN109408226A (zh) 数据处理方法、装置及终端设备
EP4398104A1 (en) Inter-process function calling method and related device
CN113688415A (zh) 文件管控方法、设备和存储介质
KR20100050098A (ko) 영상처리장치 및 그 제어 방법
CN113591139A (zh) 文件访问控制方法与装置
CN114489419A (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