页面实现方法、应用程序、电子设备及存储介质技术

技术编号:29013632 阅读:14 留言:0更新日期:2021-06-26 05:13
本申请提供一种页面实现方法,包括:主进程创建用于渲染的Surface,所述主进程为应用程序启动时运行的进程;所述主进程创建一个独立进程作为渲染进程,并将所述Surface传递给所述渲染进程,以使主进程和所述渲染进程共享所述Surface;所述渲染进程创建一个VirtualDisplay组件和一个与所述VirtualDisplay组件绑定的Presentation组件;所述渲染进程启动所述Presentation组件,所述Presentation组件内部指定的业务View被渲染到所述VirtualDisplay组件,所述VirtualDisplay组件将所述渲染结果绘制在所述Surface上。述Surface上。述Surface上。

【技术实现步骤摘要】
页面实现方法、应用程序、电子设备及存储介质


[0001]本申请涉及计算机
,尤其涉及一种页面实现方法、应用程序、电子设备及计算机可读存储介质。

技术介绍

[0002]目前,基于Android平台的直播应用程序(Application,APP)发展迅速。由于可以不受场景限制,使得用户能够随时随地地观看各种丰富的内容,直播APP深受用户的喜爱。
[0003]然而,受限于现有Android平台以及APP框架的结构,目前直播APP通常主要基于主进程实现页面渲染,然而,具有丰富内容的页面的显示,往往需要创建多个实例,主进程上多个实例的同时渲染会使得单个进程占用资源过多,导致APP运行过程中会面临更高的内存压力,从而更加频繁地触发内存回收,APP容易出现卡顿甚至崩溃,严重影响用户的观看体验。

技术实现思路

[0004]为了克服相关技术中存在的问题,本申请提供了一种页面实现方法、应用程序、电子设备及计算机可读存储介质。
[0005]根据本申请实施例的第一方面,提供一种页面实现方法,所述方法由运行在Android平台的应用程序执行,包括:主进程创建用于渲染的Surface,所述主进程为所述应用程序启动时运行的进程;所述主进程创建一个独立进程作为渲染进程,并将所述Surface传递给所述渲染进程,以使所述主进程和所述渲染进程共享所述Surface;所述渲染进程创建一个VirtualDisplay组件和一个与所述VirtualDisplay组件绑定的Presentation组件;所述渲染进程启动所述Presentation组件,所述Presentation组件内部指定的业务View被渲染到所述VirtualDisplay组件,所述VirtualDisplay组件将所述渲染结果绘制在所述Surface上。
[0006]根据本申请实施例的第二方面,提供一种应用程序,所述应用程序包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现本申请实施例第一方面所述方法的步骤。
[0007]根据本申请实施例的第三方面,提供一种电子设备,所述电子设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现本申请实施例第一方面所述方法的步骤。
[0008]根据本申请实施例的第四方面,提供一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本申请实施例第一方面所述方法的步骤。
[0009]本申请实施例提供的技术方案可以包括以下有益效果:
[0010]本申请实施例中,通过利用Android平台的Presentation技术,使应用程序的主进程创建独立进程作为渲染进程,并通过Presentation组件将其内部指定的业务View被渲染
到VirtualDisplay组件,基于VirtualDisplay组件将渲染内容绘制在所述Surface使用户观看。相比于相关技术中应用程序使用主进程进行渲染的技术方案,本申请实施例能够借助主进程所创建的独立进程实现渲染,这样,主进程和独立进程同时运行,能够获取更多的资源,减少应用程序崩溃的概率,另外,即使独立进程崩溃,主进程也能正常运行,能够克服由于渲染进程崩溃而导致整个应用程序崩溃,严重影响用户体验的缺陷。
[0011]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
[0012]此处的附图被并入说明书中并构成本申请的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
[0013]图1是本申请根据一示例性实施例示出的一种页面显示方法的流程图。
[0014]图2是本申请根据一示例性实施例示出的一种页面实现方法的应用流程图。
[0015]图3是本申请根据一示例性实施例示出的一种主进程与独立进程进行相互通信的示意图。
[0016]图4是本申请根据一示例性实施例示出的另一种主进程与独立进程进行相互通信的示意图。
[0017]图5本申请根据一示例性实施例示出的一种电子设备的结构示意图。
具体实施方式
[0018]这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
[0019]在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0020]应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
[0021]针对运行在Android平台的应用程序,受限于现有APP框架的结构,目前几乎所有的应用程序,页面渲染的实现都是在主进程中实现的,所述主进程,即为所述应用程序被启动时,所运行的进程。应用程序的页面通常具有丰富的内容需要渲染显示,常使用跨平台技术(WebView,ReactNative,Flutter等等技术),创建多个实例来实现。然而,这样会造成两个比较明显的问题:一是所有的页面实现全部基于主进程的渲染实现,那么主进程就会容易占用过多的资源,导致APP在运行过程汇总面临更高的内存压力,从而更加频繁地触发内
存回收,进而APP容易出现卡顿,影响用户体验。二是采用跨平台技术,在跨平台组件嵌入的情况下,由于跨平台组件内部代码较为庞大,一旦出现错误,将导致整个APP崩溃的概率也很大,同时这种问题一般情况下无法修复,会导致线上崩溃数量增多,影响部分用户体验。
[0022]因此,很有必要实现一种能够运行在独立进程的View实现方法,即页面实现的渲染部分不在主进程中完成,而是在主进程之外的独立进程中实现,这样即使渲染部分所在的独立进程崩溃或者被中断,也不会影响主进程的正常运行,不至于造成整个应用程序的崩溃。
[0023]在Android平台上,为应用程序创建独立进程是可以实现的,但是,在Android平台上,创建针对Activity(活动)的独立进程不够细化,即针对Activity的独立进程无法细化至View级别的进程渲染,而针对Service(服务)的独立进程无法操作主线程UI,即基于Service的独立进程,本身是与UI渲染无关的,并本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种页面实现方法,其特征在于,所述方法由运行在Android平台的应用程序执行,包括:主进程创建用于渲染的Surface,所述主进程为所述应用程序启动时运行的进程;所述主进程创建一个独立进程作为渲染进程,并将所述Surface传递给所述渲染进程,以使所述主进程和所述渲染进程共享所述Surface;所述渲染进程创建一个VirtualDisplay组件和一个与所述VirtualDisplay组件绑定的Presentation组件;所述渲染进程启动所述Presentation组件,所述Presentation组件内部指定的业务View被渲染到所述VirtualDisplay组件,所述VirtualDisplay组件将所述渲染结果绘制在所述Surface上。2.根据权利要求1所述的方法,其特征在于,所述Surface包括:SurfaceView容器或TextureView容器的Surface。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述主进程和所述渲染进程基于Android平台的AIDL方式实现进程间通信。4.根据权利要求3所述的方法,其特征在于,所述方法包括:其中一个进程在响应指定的触发信号之前,向另一进程发送调用请求,并在另一进程基于所述调用请求返回响应所述指定的触发信号的相关信息后,响...

【专利技术属性】
技术研发人员:王钰
申请(专利权)人:广州虎牙科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1