CN113127775B - 一种页面加载方法、装置、设备和存储介质 - Google Patents

一种页面加载方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN113127775B
CN113127775B CN201911400201.XA CN201911400201A CN113127775B CN 113127775 B CN113127775 B CN 113127775B CN 201911400201 A CN201911400201 A CN 201911400201A CN 113127775 B CN113127775 B CN 113127775B
Authority
CN
China
Prior art keywords
response
page
loading
view
module
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.)
Active
Application number
CN201911400201.XA
Other languages
English (en)
Other versions
CN113127775A (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.)
Beijing Kunpeng Image Culture Media Co ltd
Original Assignee
Beijing Kunpeng Image Culture Media 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 Beijing Kunpeng Image Culture Media Co ltd filed Critical Beijing Kunpeng Image Culture Media Co ltd
Priority to CN201911400201.XA priority Critical patent/CN113127775B/zh
Publication of CN113127775A publication Critical patent/CN113127775A/zh
Application granted granted Critical
Publication of CN113127775B publication Critical patent/CN113127775B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明实施例公开了一种页面加载方法、装置、设备和存储介质,该方法包括:获取待加载页面中的当前片段对象,其中当前片段对象基于原生模块中的预设响应片段类确定;在当前片段对象的页面启动生命周期函数中,加载当前片段对象对应的页面视图对象,并确定页面视图对象下的目标容器对象;在当前片段对象的首次可见生命周期函数中,加载本地响应模块中的响应视图对象,并将响应视图对象添加至目标容器对象中,并对响应视图对象进行初始化。通过本发明实施例的技术方案,可以将原生模块和本地响应模块进行功能融合来实现页面的加载操作,从而提高了页面加载效率。

Description

一种页面加载方法、装置、设备和存储介质
技术领域
本发明实施例涉及计算机技术,尤其涉及一种页面加载方法、装置、设备和存储介质。
背景技术
原生模块可以是在Android***或者IOS***中已经编辑好的功能模块。例如,原生模块可以是网页web模块。原生模块也可以是指利用非JavaScript语言编写的模块。本地响应RN(React Native)模块是一种开源的跨平台移动应用开发框架。本地响应RN模块是利用Javascript语言编写的模块。
目前,在基于Android***开发的应用软件中,通常仅是基于原生模块来实现和处理页面的加载操作,使得操作较为复杂,从而降低了页面加载效率。
发明内容
本发明实施例提供了一种页面加载方法、装置、设备和存储介质,以将原生模块和本地响应模块进行功能融合来实现页面的加载操作,从而提高了页面加载效率。
第一方面,本发明实施例提供了一种页面加载方法,包括:
获取待加载页面中的当前片段对象,其中所述当前片段对象基于原生模块中的预设响应片段类确定;
在所述当前片段对象的页面启动生命周期函数中,加载所述当前片段对象对应的页面视图对象,并确定所述页面视图对象下的目标容器对象;
在所述当前片段对象的首次可见生命周期函数中,加载本地响应模块中的响应视图对象,并将所述响应视图对象添加至所述目标容器对象中,并对所述响应视图对象进行初始化。
第二方面,本发明实施例还提供了一种页面加载装置,包括:
当前片段对象获取模块,用于获取待加载页面中的当前片段对象,其中所述当前片段对象基于原生模块中的预设响应片段类确定;
目标容器对象确定模块,用于在所述当前片段对象的页面启动生命周期函数中,加载所述当前片段对象对应的页面视图对象,并确定所述页面视图对象下的目标容器对象;
响应视图对象初始化模块,用于在所述当前片段对象的首次可见生命周期函数中,加载本地响应模块中的响应视图对象,并将所述响应视图对象添加至所述目标容器对象中,并对所述响应视图对象进行初始化。
第三方面,本发明实施例还提供了一种设备,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任意实施例所提供的页面加载方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所提供的页面加载方法。
本发明实施例通过获取待加载页面中的当前片段对象,其中当前片段对象基于原生模块中的预设响应片段类确定;在当前片段对象的页面启动生命周期函数中,加载当前片段对象对应的页面视图对象,并确定页面视图对象下的目标容器对象;在当前片段对象的首次可见生命周期函数中,加载本地响应模块中的响应视图对象,并将响应视图对象添加至目标容器对象中,并对响应视图对象进行初始化,从而可以将原生模块和本地响应模块进行功能融合来实现页面的加载操作,从而提高了页面加载效率。
附图说明
图1是本发明实施例一提供的一种页面加载方法的流程图;
图2是本发明实施例二提供的一种页面加载方法的流程图;
图3是本发明实施例三提供的一种页面加载装置的结构示意图;
图4是本发明实施例四提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种页面加载方法的流程图,本实施例可适用于对页面中的各个组件进行加载,以便后续可以进行页面显示的情况。该方法可以由页面加载装置来执行,该装置可以由软件和/或硬件的方式来实现,集成于搭载有Android***的设备中,比如智能手机、平板电脑、智能电视或者笔记本电脑等智能终端。如图1所示,该方法具体包括以下步骤:
S110、获取待加载页面中的当前片段对象,其中当前片段对象基于原生模块中的预设响应片段类确定。
其中,待加载页面可以是指待加载的任意一种页面。例如,待加载页面可以是但不限于关注页面等。当前片段对象可以是指待加载页面中当前需要加载的Fragment对象。待加载页面可以包括一个或多个Fragment片段对象。对于待加载页面中的每个Fragment片段对象均可以利用步骤S110-S130提供的加载方式进行加载,以便实现整个页面的加载。预设响应片段类可以是预先定义的,用于生成Fragment片段对象的Fragment类。
具体地,可以预先定义一个预设响应片段类RNFollowPlayListFragment,并且预设响应片段类可以通过继承关键字extends的方式,继承预设懒加载片段类DYBaseLazyFragment,使得预设响应片段类可以具备页面懒加载的功能,以便进一步提高页面加载的效率。其中,预设懒加载片段类DYBaseLazyFragment可以是通过继承***提供的片段Fragment类来实现懒加载的功能逻辑的封装。本实施例可以通过检测当前片段对象是否为首次加载,若是,则进行加载并获得当前片段对象,若否,则可以直接获得已加载过的当前片段对象,从而可以避免当前片段对象的重复加载,实现了懒加载的功能。
示例性地,S110可以包括:检测待加载页面中的当前片段对象是否为首次加载;若是,则对原生模块中的预设响应片段类进行实例化,获得当前片段对象,以及对第一数据传递类进行实例化,获得第一数据传递对象,并将第一数据传递对象设置到当前片段对象中,获得设置后的当前片段对象;若否,则获得已加载的当前片段对象。
其中,第一数据传递对象可以是指在原生模块中用于传递数据的bundle对象。第一数据传递对象可以以键值对的形式存在。
具体地,本实施例可以在当前片段对象的setUserVisibleHint回调函数(定义为:public void setUserVisibleHint(boolean isVisibleToUser))中判断当前片段对象是否为首次加载,例如,可以通过定义一个全局变量private boolean isFirstVisible=true来进行首次加载的状态管理。当检测到全局变量isFirstVisible是true时,表明当前片段对象是首次加载,即首次可见,此时可以对原生模块中的预设响应片段类RNFollowPlayListFragment进行实例化,例如通过RNFollowPlayListFragment fragment=new RNFollowPlayListFragment()方式,获得预设响应片段类类型的当前片段对象fragment,并对第一数据传递类进行实例化,例如,通过Bundle bundle=new Bundle()的方式,获得原生模块中的第一数据传递对象bundle,并可以通过以第一数据传递对象bundle作为输入参数,调用当前片段对象fragment中的设置函数fragment.setArguments(bundle),将第一数据传递对象bundle设置到当前片段对象fragment中,然后可以通过return fragment的方式将设置后的当前片段对象进行返回处理,从而可以获得首次加载后的当前片段对象。本实施例通过将第一数据传递对象bundle设置到当前片段对象fragment中,可以实现对入参参数的扩展,提高了整个软件的可扩展性。
在首次加载成功后,可以通过调用isFirstVisible=false的方式,将全局变量isFirstVisible的值更新为false,从而在检测到全局变量isFirstVisible是false时,表明当前片段对象并不是首次加载,此时无需再次加载,可以直接获得已加载过的当前片段对象,从而实现了懒加载的功能。
S120、在当前片段对象的页面启动生命周期函数中,加载当前片段对象对应的页面视图对象,并确定页面视图对象下的目标容器对象。
其中,页面启动生命周期函数可以是指当前片段对象的onCreateView()生命周期函数,用于***在当前片段对象首次绘制时进行调用。页面视图对象可以是指原生模块中的视图对象。目标容器对象可以是页面视图对象的顶级对象,用于存储其他对象的一个容器。
具体地,本实施例可以在当前片段对象的页面启动生命周期函数onCreateView中实现对页面视图对象的加载逻辑,即执行加载当前片段对象对应的页面视图对象,并确定页面视图对象下的目标容器对象的操作。
示例性地,S120中的加载当前片段对象对应的页面视图对象,并确定页面视图对象下的目标容器对象,可以包括:以视图加载器、容器对象、页面状态参数信息和视图布局标识信息作为输入参数,调用预设视图加载函数,加载当前片段对象对应的页面视图对象,并获得加载后的页面视图对象;以目标容器对象对应的目标容器标识作为输入参数,调用页面视图对象中的容器对象查询函数,获得目标容器标识对应的目标容器对象。
其中,视图加载器可以是指LayoutInflater类型的inflater加载器。容器对象可以是指原生模块中ViewGroup类型的,用于承载视图对象的容器。页面状态参数信息可以是指在页面状态转换时***获取的上一页面的参数信息。视图布局标识信息可以是指视图布局文件所对应的标识信息,以便基于该标识信息可以查找对应的视图布局文件。预设视图加载函数可以是预先定义的,用于确定并加载页面视图对象的函数。目标容器标识可以是指目标容器对象所对应的标识,以便区分不同的容器对象。容器对象查询函数可以是指***自带的,用于通过容器标识来查询页面视图对象中的容器对象的函数。
具体地,本实施例可以通过if(mView==null)的方式,判断当前片段对象对应的页面视图对象mView是否为空对象,若否,则表明页面视图对象已经加载过,此时无需进行记载,可以直接获得已加载好的页面视图对象,以避免多次加载重复的对象内容;若是,则表明页面视图对象还未加载,此时可以通过以视图加载器inflater、容器对象container、页面状态参数信息savedInstanceState(当不存在上一页面的参数信息时,此处可以设置为null)和视图布局标识信息(比如R.layout.fragment_follow_play_list)作为输入参数,调用预设视图加载函数mView=oncreateview(inflater,container,savedInstanceState,R.layout.fragment_follow_play_list),加载当前片段对象对应的页面视图对象mView,并获得加载后的页面视图对象mView。通过以目标容器对象对应的目标容器标识(比如R.id.fl_rn_container)作为输入参数,调用页面视图对象中的容器对象查询函数mRnContainer=mView.findViewById(R.id.fl_rn_container),获得目标容器标识对应的目标容器对象mRnContainer。
S130、在当前片段对象的首次可见生命周期函数中,加载本地响应模块中的响应视图对象,并将响应视图对象添加至目标容器对象中,并对响应视图对象进行初始化。
其中,首次可见生命周期函数可以是指当前片段对象的onFirstUserVisible()生命周期函数,用于在第一次当前片段对象可见时调用,以进行初始化操作。响应视图对象可以是本地响应RN模块中的视图对象。
具体地,本实施例可以在当前片段对象的首次可见生命周期函数onFirstUserVisible()中实现对本地响应RN模块的初始化逻辑,即执行加载本地响应模块中的响应视图对象,并将响应视图对象添加至目标容器对象中,并对响应视图对象进行初始化的操作,从而可以将原生模块和本地响应模块进行功能融合,将页面中各个组件快速地加载到内存中,以便后续在需要进行页面显示时进行快速显示,提高了页面加载效率以及页面显示效率。
本实施例的技术方案,通过获取待加载页面中的当前片段对象,其中当前片段对象基于原生模块中的预设响应片段类确定;在当前片段对象的页面启动生命周期函数中,加载当前片段对象对应的页面视图对象,并确定页面视图对象下的目标容器对象;在当前片段对象的首次可见生命周期函数中,加载本地响应模块中的响应视图对象,并将响应视图对象添加至目标容器对象中,并对响应视图对象进行初始化,从而可以将原生模块和本地响应模块进行功能融合来实现页面的加载操作,从而提高了页面加载效率。
在上述技术方案的基础上,该方法还可以包括:在当前片段对象的关联建立生命周期函数中进行事件总线的注册,以及在当前片段对象的关联解除生命周期函数中进行事件总线的反注册。
其中,当前片段对象的关联建立生命周期函数可以是指当前片段对象的onAttach()生命周期函数,用于在当前片段对象fragment和当前活动窗口组件activity建立关联时进行调用。当前片段对象的关联解除生命周期函数可以是指当前片段对象的onDetach()生命周期函数,用于在当前片段对象fragment和当前活动窗口组件activity解除关联时进行调用。事件总线可以是指一个消息分发模块,用于与外界其他类进行通信。
具体地,本实施例可以在当前片段对象的关联建立生命周期函数onAttach()中实现事件总线的注册。例如:事件总线的注册的实现方式如下:
其中,@Override表示重写父类的关联建立生命周期函数onAttach()。this表示当前片段对象fragment。activity表示***返回的当前活动窗口组件activity。
本实施例可以在当前片段对象的关联解除生命周期函数onDetach()中实现事件总线的反注册。例如:事件总线的反注册的实现方式如下:
本实施例通过在当前片段对象的关联建立生命周期函数中进行事件总线的注册,可以实现与外界的通信,以及在当前片段对象的关联解除生命周期函数中进行事件总线的反注册,可以实现数据的实时释放。
实施例二
图2为本发明实施例二提供的一种页面加载方法的流程图,本实施例在上述实施例的基础上,对步骤“加载本地响应模块中的响应视图对象,并将响应视图对象添加至目标容器对象中,并对响应视图对象进行初始化”进行了优化,并在此基础上,还对本地响应模块的分包加载操作进行了详细描述。其中与上述各实施例相同或相应的术语的解释在此不再赘述。
参见图2,本实施例提供的页面加载方法具体包括以下步骤:
S210、获取待加载页面中的当前片段对象,其中当前片段对象基于原生模块中的预设响应片段类确定。
S220、在当前片段对象的页面启动生命周期函数中,加载当前片段对象对应的页面视图对象,并确定页面视图对象下的目标容器对象。
S230、在当前片段对象的首次可见生命周期函数中,获取本地响应模块中的响应管理对象。
其中,响应管理对象可以是指本地响应RN模块中的ReactNativeHost管理对象。
具体地,可以通过调用RN模块中的应用上下文对象DYReactApplication中的对象获取函数DYReactApplication.getInstance().getReactNativeHost(),获得ReactNativeHost类型的响应管理对象reactNativeHost。
S240、调用响应管理对象中的数据传递对象获取函数,获取本地响应模块中的第二数据传递对象。
其中,第二数据传递对象可以是指在本地响应RN模块中用于传递数据的bundle对象。第二数据传递对象可以以键值对的形式存在。每个第二数据传递对象均对应一个key键信息进行表征,从而可以基于key键信息获取特定的第二数据传递对象。数据传递对象获取函数可以是用于获取本地响应模块中指定的第二数据传递对象的函数。
具体地,本实施例可以以第二数据传递对象对应的键信息作为输入参数,比如键信息为FOLLOW_PLAY_LIST_COMPONENT_NAME,调用响应管理对象reactNativeHost中的数据传递对象获取函数reactNativeHost.getBundle(FOLLOW_PLAY_LIST_COMPONENT_NAME),获得本地响应模块中该键信息所对应的第二数据传递对象dyBundle。
S250、基于第二数据传递对象检测本地响应模块的分包是否未加载,若是,则进入步骤S260,若否,则进入步骤S270。
具体地,本实施可以通过以第二数据传递对象dyBundle为输入参数,调用响应管理对象reactNativeHost中的数据传递对象加载检测函数reactNativeHost.isBundleLoaded(dyBundle)的方式,判断本地响应RN模块的分包是否未加载,若是,则可以进入步骤S260执行分包加载逻辑;若是,则表明RN模块的分包已经加载过,无需重复加载,此时可以进入步骤S270执行分包加载后的业务逻辑。
S260、创建第二数据传递对象对应的加载***对象,并以第二数据传递对象和加载***对象为输入对象,调用响应管理对象中的分包加载函数,对本地响应模块的分包进行加载,并执行步骤S270。
其中,加载***对象可以是指加载第二数据传递对象的***对象。分包加载函数可以是指响应管理对象中的,用于对RN模块的分包进行加载的函数。
具体地,可以通过以第二数据传递对象dyBundle为输入参数,调用mBundleLoadListener=new BundleLoadListener(dyBundle)方式,创建加载***BundleLoadListener类型的加载***对象mBundleLoadListener。并通过以第二数据传递对象dyBundle和加载***对象mBundleLoadListener为输入参数,调用响应管理对象reactNativeHost中的分包加载函数调用reactNativeHost.requireLoadBundle(dyBundle,mBundleLoadListener),可以实现RN模块的具体分包加载逻辑。本实施例通过将加载***对象mBundleLoadListener设置到响应管理对象中,可以实现对RN模块的第二数据传递对象的加载状态的监听。
S270、调用预设加载函数,加载本地响应模块中的响应视图对象,并将响应视图对象添加至目标容器对象中,并对响应视图对象进行初始化。
其中,预设加载函数可以是在RN模块的分包加载成功后执行的,用于对RN模块中的响应视图对象进行加载和初始化的函数。
具体地,在检测到本地响应模块的分包已加载时,可以在加载***对象mBundleLoadListener的回调函数onLoadSuccess中,以待加载参数信息args(该参数信息默认为空)为输入参数,调用预设加载函数onBundleLoaded(args),来实现加载本地响应模块中的响应视图对象,并将响应视图对象添加至目标容器对象中,并对响应视图对象进行初始化的功能。
示例性地,预设加载函数可以通过如下步骤实现加载本地响应模块中的响应视图对象,并将响应视图对象添加至目标容器对象中,并对响应视图对象进行初始化的功能:若检测到本地响应模块中的响应视图对象为空对象,则根据上下文信息确定本地响应模块中的响应视图对象;调用目标容器对象中的视图添加函数,将响应视图对象添加至目标容器对象中;以第二数据传递对象对应的键信息和加载参数作为输入参数,调用响应视图对象中的初始化函数,对响应视图对象进行初始化。
具体地,可以通过调用if(mReactView==null)的方式,检测本地响应模块中的响应视图对象mReactView是否为空对象,若是,则表明响应视图对象未被加载过,此时可以通过以视图加载器inflater获得的上下文信息作为输入参数,调用mReactView=newDYReactView(mContext),获得RN模块中的DYReactView类型的响应视图对象mReactView。通过调用new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT)的方式可以获得***的布局对象frameLayout.LayoutParams。以响应视图对象mReactView和***的布局对象frameLayout.LayoutParams作为输入参数,调用目标容器对象mRnContainer中的视图添加函数mRnContainer.addView(mReactView,frameLayout.LayoutParams),将加载好的响应视图对象mReactView添加至目标容器对象mRnContainer中。以第二数据传递对象对应的键信息(比如FOLLOW_PLAY_LIST_COMPONENT_NAME)和待加载参数信息args(默认为空)作为输入参数,调用响应视图对象mReactView中的初始化函数mReactView.initWithBundle(FOLLOW_PLAY_LIST_COMPONENT_NAME,args),对响应视图对象mReactView进行初始化,实现整个响应视图对象mReactView的初始化逻辑,从而完成了整体的响应视图对象mReactView的加载过程。
本实施例的技术方案,通过在基于第二数据传递对象检测到本地响应模块的分包已加载,则调用预设加载函数,加载本地响应模块中的响应视图对象,并将响应视图对象添加至目标容器对象中,并对响应视图对象进行初始化,从而可以进一步将原生模块和本地响应模块进行功能融合来实现页面的加载操作,从而进一步提高了页面加载效率。
在上述技术方案的基础上,该方法还可以包括:在当前片段对象的销毁生命周期函数中,检测加载***对象是否为空对象,若否,则对加载***对象进行释放,并将释放后的加载***进行置空处理;检测响应视图对象是否为空对象,若否,则对响应视图对象进行释放,并将释放后的响应视图对象进行置空处理。
其中,当前片段对象的销毁生命周期函数可以是指当前片段对象的onDestroy()生命周期函数,用于在销毁当前片段对象时进行调用。
具体地,可以在当前片段对象的销毁生命周期函数中实现对资源的释放操作。具体的释放方式可以为:检测加载***对象mBundleLoadListener是否为非空对象,若是,则表明需要对加载***对象进行释放,此时可以通过调用RN模块中的应用上下文对象DYReactApplication中的***释放函数DYReactApplication.getInstance().getReactNativeHost().removeBundleLoadListene r(mBundleLoadListener),将加载***对象mBundleLoadListener进行释放,并通过调用mBundleLoadListener=null的方式,对释放后的加载***对象进行置空处理。类似地,可以通过调用if(mReactView!=null)的方式,检测响应视图对象mReactView是否为非空对象,若是,则表明需要对响应视图对象进行释放,此时可以通过调用响应视图对象中的销毁函数mReactView.destroy(),对响应视图对象mReactView进行释放,并通过调用mReactView=null的方式,对释放后的响应视图对象进行置空处理,从而实现了整个页面的及时释放,提高了资源利用率。
以下是本发明实施例提供的页面加载装置的实施例,该装置与上述各实施例的页面加载方法属于同一个发明构思,在页面加载装置的实施例中未详尽描述的细节内容,可以参考上述页面加载方法的实施例。
实施例三
图3为本发明实施例三提供的一种页面加载装置的结构示意图,本实施例可适用于对页面中的各个组件进行加载,以便后续可以进行页面显示的情况。该装置具体包括:当前片段对象获取模块310、目标容器对象确定模块320和响应视图对象初始化模块330。
其中,当前片段对象获取模块310,用于获取待加载页面中的当前片段对象,其中当前片段对象基于原生模块中的预设响应片段类确定;目标容器对象确定模块320,用于在当前片段对象的页面启动生命周期函数中,加载当前片段对象对应的页面视图对象,并确定页面视图对象下的目标容器对象;响应视图对象初始化模块330,用于在当前片段对象的首次可见生命周期函数中,加载本地响应模块中的响应视图对象,并将响应视图对象添加至目标容器对象中,并对响应视图对象进行初始化。
可选地,当前片段对象获取模块310,具体用于:
检测待加载页面中的当前片段对象是否为首次加载;若是,则对原生模块中的预设响应片段类进行实例化,获得当前片段对象,以及对第一数据传递类进行实例化,获得第一数据传递对象,并将第一数据传递对象设置到当前片段对象中,获得设置后的当前片段对象;若否,则获得已加载的当前片段对象。
可选地,目标容器对象确定模块320,具体用于:
以视图加载器、容器对象、页面状态参数信息和视图布局标识信息作为输入参数,调用预设视图加载函数,加载当前片段对象对应的页面视图对象,并获得加载后的页面视图对象;以目标容器对象对应的目标容器标识作为输入参数,调用页面视图对象中的容器对象查询函数,获得目标容器标识对应的目标容器对象。
可选地,响应视图对象初始化模块330,具体用于:
获取本地响应模块中的响应管理对象;调用响应管理对象中的数据传递对象获取函数,获取本地响应模块中的第二数据传递对象;若基于第二数据传递对象检测到本地响应模块的分包已加载,则调用预设加载函数,加载本地响应模块中的响应视图对象,并将响应视图对象添加至目标容器对象中,并对响应视图对象进行初始化。
可选地,响应视图对象初始化模块330,还用于:
若基于第二数据传递对象检测到本地响应模块的分包未加载,则创建第二数据传递对象对应的加载***对象,并以第二数据传递对象和加载***对象为输入对象,调用响应管理对象中的分包加载函数,对本地响应模块的分包进行加载。
可选地,预设加载函数通过如下步骤实现加载本地响应模块中的响应视图对象,并将响应视图对象添加至目标容器对象中,并对响应视图对象进行初始化的功能:
若检测到本地响应模块中的响应视图对象为空对象,则根据上下文信息确定本地响应模块中的响应视图对象;
调用目标容器对象中的视图添加函数,将响应视图对象添加至目标容器对象中;
以第二数据传递对象对应的键信息和待加载参数信息作为输入参数,调用响应视图对象中的初始化函数,对响应视图对象进行初始化。
可选地,该装置还包括:
事件总线注册模块,用于在当前片段对象的关联建立生命周期函数中进行事件总线的注册,以及在当前片段对象的关联解除生命周期函数中进行事件总线的反注册。
本发明实施例所提供的页面加载装置可执行本发明任意实施例所提供的页面加载方法,具备执行页面加载方法相应的功能模块和有益效果。
实施例四
图4是本发明实施例四提供的一种设备的结构示意图。参见图4,该设备包括:
一个或多个处理器410;
存储器420,用于存储一个或多个程序;
当一个或多个程序被一个或多个处理器410执行,使得一个或多个处理器410实现如上述实施例中任意实施例所提供的页面加载方法,该方法包括:
获取待加载页面中的当前片段对象,其中当前片段对象基于原生模块中的预设响应片段类确定;
在当前片段对象的页面启动生命周期函数中,加载当前片段对象对应的页面视图对象,并确定页面视图对象下的目标容器对象;
在当前片段对象的首次可见生命周期函数中,加载本地响应模块中的响应视图对象,并将响应视图对象添加至目标容器对象中,并对响应视图对象进行初始化。
图4中以一个处理器410为例;设备中的处理器410和存储器420可以通过总线或其他方式连接,图4中以通过总线连接为例。
存储器420作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的页面加载方法对应的程序指令/模块(例如,页面加载装置中的当前片段对象获取模块310、目标容器对象确定模块320和响应视图对象初始化模块330)。处理器410通过运行存储在存储器420中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的页面加载方法。
存储器420主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器420可进一步包括相对于处理器410远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本实施例提出的设备与上述实施例提出的页面加载方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,并且本实施例具备执行页面加载方法相同的有益效果。
实施例五
本实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例的页面加载方法,该方法包括:
获取待加载页面中的当前片段对象,其中当前片段对象基于原生模块中的预设响应片段类确定;
在当前片段对象的页面启动生命周期函数中,加载当前片段对象对应的页面视图对象,并确定页面视图对象下的目标容器对象;
在当前片段对象的首次可见生命周期函数中,加载本地响应模块中的响应视图对象,并将响应视图对象添加至目标容器对象中,并对响应视图对象进行初始化。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本领域普通技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个计算装置上,或者分布在多个计算装置所组成的网络上,可选地,他们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (9)

1.一种页面加载方法,其特征在于,包括:
获取待加载页面中的当前片段对象,其中所述当前片段对象基于原生模块中的预设响应片段类确定;
在所述当前片段对象的页面启动生命周期函数中,加载所述当前片段对象对应的页面视图对象,并确定所述页面视图对象下的目标容器对象;
在所述当前片段对象的首次可见生命周期函数中,获取本地响应模块中的响应管理对象;
以第二数据传递对象对应的键信息作为输入参数,调用所述响应管理对象中的数据传递对象获取函数,获取本地响应模块中的该键信息所对应的第二数据传递对象;
若以所述第二数据传递对象为输入参数,调用所述响应管理对象中的数据传递对象加载检测函数,检测到所述本地响应模块的分包已加载,则调用预设加载函数,加载本地响应模块中的响应视图对象,并将所述响应视图对象添加至所述原生模块的页面视图对象下的目标容器对象中,并对所述响应视图对象进行初始化。
2.根据权利要求1所述的方法,其特征在于,获取待加载页面中的当前片段对象,包括:
检测待加载页面中的当前片段对象是否为首次加载;
若是,则对原生模块中的预设响应片段类进行实例化,获得当前片段对象,以及对第一数据传递类进行实例化,获得第一数据传递对象,并将所述第一数据传递对象设置到所述当前片段对象中,获得设置后的当前片段对象;
若否,则获得已加载的当前片段对象。
3.根据权利要求1所述的方法,其特征在于,加载所述当前片段对象对应的页面视图对象,并确定所述页面视图对象下的目标容器对象,包括:
以视图加载器、容器对象、页面状态参数信息和视图布局标识信息作为输入参数,调用预设视图加载函数,加载所述当前片段对象对应的页面视图对象,并获得加载后的页面视图对象;
以目标容器对象对应的目标容器标识作为输入参数,调用所述页面视图对象中的容器对象查询函数,获得所述目标容器标识对应的目标容器对象。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若基于所述第二数据传递对象检测到所述本地响应模块的分包未加载,则创建所述第二数据传递对象对应的加载***对象,并以所述第二数据传递对象和所述加载***对象为输入对象,调用所述响应管理对象中的分包加载函数,对所述本地响应模块的分包进行加载。
5.根据权利要求1所述的方法,其特征在于,所述预设加载函数通过如下步骤实现加载本地响应模块中的响应视图对象,并将所述响应视图对象添加至所述目标容器对象中,并对所述响应视图对象进行初始化的功能:
若检测到本地响应模块中的响应视图对象为空对象,则根据上下文信息确定本地响应模块中的响应视图对象;
调用所述目标容器对象中的视图添加函数,将所述响应视图对象添加至所述目标容器对象中;
以所述第二数据传递对象对应的键信息和待加载参数信息作为输入参数,调用所述响应视图对象中的初始化函数,对所述响应视图对象进行初始化。
6.根据权利要求1-5任一所述的方法,其特征在于,所述方法还包括:
在所述当前片段对象的关联建立生命周期函数中进行事件总线的注册,以及在所述当前片段对象的关联解除生命周期函数中进行所述事件总线的反注册。
7.一种页面加载装置,其特征在于,包括:
当前片段对象获取模块,用于获取待加载页面中的当前片段对象,其中所述当前片段对象基于原生模块中的预设响应片段类确定;
目标容器对象确定模块,用于在所述当前片段对象的页面启动生命周期函数中,加载所述当前片段对象对应的页面视图对象,并确定所述页面视图对象下的目标容器对象;
响应视图对象初始化模块,用于在所述当前片段对象的首次可见生命周期函数中,获取本地响应模块中的响应管理对象;以第二数据传递对象对应的键信息作为输入参数,调用所述响应管理对象中的数据传递对象获取函数,获取本地响应模块中的该键信息所对应的第二数据传递对象;若以所述第二数据传递对象为输入参数,调用响应管理对象中的数据传递对象加载检测函数,检测到所述本地响应模块的分包已加载,则调用预设加载函数,加载本地响应模块中的响应视图对象,并将所述响应视图对象添加至所述原生模块的页面视图对象下的目标容器对象中,并对所述响应视图对象进行初始化。
8.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的页面加载方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的页面加载方法。
CN201911400201.XA 2019-12-30 2019-12-30 一种页面加载方法、装置、设备和存储介质 Active CN113127775B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911400201.XA CN113127775B (zh) 2019-12-30 2019-12-30 一种页面加载方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911400201.XA CN113127775B (zh) 2019-12-30 2019-12-30 一种页面加载方法、装置、设备和存储介质

Publications (2)

Publication Number Publication Date
CN113127775A CN113127775A (zh) 2021-07-16
CN113127775B true CN113127775B (zh) 2023-10-20

Family

ID=76768274

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911400201.XA Active CN113127775B (zh) 2019-12-30 2019-12-30 一种页面加载方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN113127775B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114528046A (zh) * 2022-02-18 2022-05-24 平安普惠企业管理有限公司 视图加载方法、***、计算机及可读存储介质
CN115988169B (zh) * 2023-03-20 2023-08-18 全时云商务服务股份有限公司 一种云会议中实时视频合屏文字快速显示方法与装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105893095A (zh) * 2016-04-13 2016-08-24 海尔优家智能科技(北京)有限公司 一种网页加载的方法和装置
CN107045438A (zh) * 2016-12-16 2017-08-15 阿里巴巴集团控股有限公司 一种应用顶层视图处理方法、装置及组件
CN107329978A (zh) * 2017-05-31 2017-11-07 北京京东尚科信息技术有限公司 多平台融合的路由方法和装置
CN108021614A (zh) * 2017-08-18 2018-05-11 口碑(上海)信息技术有限公司 一种用于页面动态加载的方法及***
WO2019024754A1 (zh) * 2017-08-04 2019-02-07 阿里巴巴集团控股有限公司 页面加载的方法、装置和***

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105893095A (zh) * 2016-04-13 2016-08-24 海尔优家智能科技(北京)有限公司 一种网页加载的方法和装置
CN107045438A (zh) * 2016-12-16 2017-08-15 阿里巴巴集团控股有限公司 一种应用顶层视图处理方法、装置及组件
CN107329978A (zh) * 2017-05-31 2017-11-07 北京京东尚科信息技术有限公司 多平台融合的路由方法和装置
WO2019024754A1 (zh) * 2017-08-04 2019-02-07 阿里巴巴集团控股有限公司 页面加载的方法、装置和***
CN108021614A (zh) * 2017-08-18 2018-05-11 口碑(上海)信息技术有限公司 一种用于页面动态加载的方法及***

Also Published As

Publication number Publication date
CN113127775A (zh) 2021-07-16

Similar Documents

Publication Publication Date Title
US10467025B2 (en) Managing delivery of code and dependent data using application containers
US20170206071A1 (en) Application containers with dynamic sub-package loading
CN113127775B (zh) 一种页面加载方法、装置、设备和存储介质
CN109933381B (zh) 一种内核的加载方法及装置
CN110704131B (zh) 一种html5应用调用原生应用的方法和装置
CN109343970B (zh) 基于应用程序的操作方法、装置、电子设备及计算机介质
CN109725887B (zh) 基于消息研发框架的数据交互方法、装置及终端设备
CN109302639B (zh) 一种弹幕消息的分发方法、装置、终端和存储介质
CN117633102A (zh) 区块链的数据整合方法、装置、计算机设备及存储介质
CN110442404B (zh) 一种对象释放方法、装置、设备和存储介质
CN114995970A (zh) 任务处理方法、装置、存储介质及电子设备
CN109005448B (zh) 弹幕消息分发方法、装置、设备及存储介质
CN112631638A (zh) 终端应用更新方法、装置、存储介质及电子设备
CN112748952A (zh) 一种环形依赖关系的检测方法、装置、设备和存储介质
CN112988125B (zh) 一种数据桥接方法、装置、设备和存储介质
CN108959955A (zh) 文件处理方法及装置
CN112631692B (zh) 一种应用程序运行控制方法、装置和存储介质
CN108897639A (zh) 文件处理方法及装置
CN115378792B (zh) 告警处理方法、装置及存储介质
CN117076160B (zh) 组件调用方法、装置、设备和存储介质
CN112035278B (zh) 函数的执行方法、装置、设备及存储介质
CN110032406B (zh) 基于消息的视图加载方法、装置、设备和存储介质
CN117435363A (zh) 进程间通信方法、***、装置、电子设备及介质
CN117435323A (zh) 应用功能处理方法、装置、电子设备和存储介质
CN113703989A (zh) 基于Android***的消息处理方法、装置、设备和存储介质

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20230913

Address after: Room 3090, Room 101, 9th Floor, Building 19, Zone 16, No. 188 South Fourth Ring West Road, Fengtai District, Beijing, 100070

Applicant after: Beijing Kunpeng Image Culture Media Co.,Ltd.

Address before: 430070 room 007, A301, third floor, building B1, software industry phase 4.1, No. 1, Software Park East Road, Donghu New Technology Development Zone, Wuhan City, Hubei Province (Wuhan area of free trade zone)

Applicant before: WUHAN DOUYU YULE NETWORK TECHNOLOGY Co.,Ltd.

GR01 Patent grant
GR01 Patent grant