掌桥专利:专业的专利平台
掌桥专利
首页

一种用于兼容不同版本的碎片信息的方法与设备

文献发布时间:2023-06-19 09:36:59


一种用于兼容不同版本的碎片信息的方法与设备

技术领域

本申请涉及通信领域,尤其涉及一种用于兼容不同版本的碎片信息的技术。

背景技术

Android 3.0版本为了适应大屏幕的平板,增加了新的API Fragmen t,之后为了能在3.0以下的手机上也可以使用fragment,提供了一套supp ort v4的fragment API,但这两个不同版本的fragment API是不能同时使用的,因为它们是两个管理体系。

发明内容

本申请的一个目的是提供一种用于兼容不同版本的碎片信息的方法与设备。

根据本申请的一个方面,提供了一种用于兼容不同版本的碎片信息的方法,该方法包括:

创建继承于第一碎片信息的碎片桥接信息,其中,所述碎片桥接信息持有第二碎片信息对应的第二碎片对象的引用,所述第一碎片信息与所述第二碎片信息对应不同的版本;

在所述碎片桥接信息中,根据用于展示所述碎片桥接信息的页面对应的上下文对象,创建所述第二碎片信息对应的宿主回调信息对应的宿主回调对象,并将所述宿主回调对象赋值给所述第二碎片对象中的宿主回调变量;

在所述碎片桥接信息中重写至少一个第一方法,在所述至少一个第一方法中的每个第一方法中调用所述第二碎片对象中与该第一方法相对应的第二方法;

在所述碎片桥接信息中重写第一创建视图方法,在所述第一创建视图方法中调用所述第二碎片对象中与所述第一创建视图方法对应的第二创建视图方法,并将所述第二创建视图方法返回的第二视图赋值给所述第二碎片对象中的视图变量,并将所述第二视图作为所述第一创建视图方法的返回值。

根据本申请的一个方面,提供了一种用于兼容不同版本的碎片信息的用户设备,该设备包括:

一一模块,用于创建继承于第一碎片信息的碎片桥接信息,其中,所述碎片桥接信息持有第二碎片信息对应的第二碎片对象的引用,所述第一碎片信息与所述第二碎片信息对应不同的版本;

一二模块,用于在所述碎片桥接信息中,根据用于展示所述碎片桥接信息的页面对应的上下文对象,创建所述第二碎片信息对应的宿主回调信息对应的宿主回调对象,并将所述宿主回调对象赋值给所述第二碎片对象中的宿主回调变量;

一三模块,用于在所述碎片桥接信息中重写至少一个第一方法,在所述至少一个第一方法中的每个第一方法中调用所述第二碎片对象中与该第一方法相对应的第二方法;

一四模块,用于在所述碎片桥接信息中重写第一创建视图方法,在所述第一创建视图方法中调用所述第二碎片对象中与所述第一创建视图方法对应的第二创建视图方法,并将所述第二创建视图方法返回的第二视图赋值给所述第二碎片对象中的视图变量,并将所述第二视图作为所述第一创建视图方法的返回值。

根据本申请的一个方面,提供了一种用于兼容不同版本的碎片信息的设备,其中,该设备包括:

处理器;以及

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行如下操作:

创建继承于第一碎片信息的碎片桥接信息,其中,所述碎片桥接信息持有第二碎片信息对应的第二碎片对象的引用,所述第一碎片信息与所述第二碎片信息对应不同的版本;

在所述碎片桥接信息中,根据用于展示所述碎片桥接信息的页面对应的上下文对象,创建所述第二碎片信息对应的宿主回调信息对应的宿主回调对象,并将所述宿主回调对象赋值给所述第二碎片对象中的宿主回调变量;

在所述碎片桥接信息中重写至少一个第一方法,在所述至少一个第一方法中的每个第一方法中调用所述第二碎片对象中与该第一方法相对应的第二方法;

在所述碎片桥接信息中重写第一创建视图方法,在所述第一创建视图方法中调用所述第二碎片对象中与所述第一创建视图方法对应的第二创建视图方法,并将所述第二创建视图方法返回的第二视图赋值给所述第二碎片对象中的视图变量,并将所述第二视图作为所述第一创建视图方法的返回值。

根据本申请的一个方面,提供了一种存储指令的计算机可读介质,所述指令在被执行时使得系统进行如下操作:

创建继承于第一碎片信息的碎片桥接信息,其中,所述碎片桥接信息持有第二碎片信息对应的第二碎片对象的引用,所述第一碎片信息与所述第二碎片信息对应不同的版本;

在所述碎片桥接信息中,根据用于展示所述碎片桥接信息的页面对应的上下文对象,创建所述第二碎片信息对应的宿主回调信息对应的宿主回调对象,并将所述宿主回调对象赋值给所述第二碎片对象中的宿主回调变量;

在所述碎片桥接信息中重写至少一个第一方法,在所述至少一个第一方法中的每个第一方法中调用所述第二碎片对象中与该第一方法相对应的第二方法;

在所述碎片桥接信息中重写第一创建视图方法,在所述第一创建视图方法中调用所述第二碎片对象中与所述第一创建视图方法对应的第二创建视图方法,并将所述第二创建视图方法返回的第二视图赋值给所述第二碎片对象中的视图变量,并将所述第二视图作为所述第一创建视图方法的返回值。

与现有技术相比,本申请通过将第二碎片信息的生命周期桥接到继承于第一碎片信息的碎片桥接信息的生命周期中,通过桥接生命周期,可以使得当前应用表面上是在调用碎片桥接信息的父类第一碎片信息的API,但实质上是在调用第二碎片信息的API,并通过构建宿主回调对象(HostCallbacks)的方式,确保第二碎片对象的各个生命周期可以正确执行,以在当前页面上通过桥接的方式正常展示第二碎片对象,从而可以在当前页面上同时使用这两个版本的Fragment API,使得两个不同版本的fragment可以放在同一个Activity中一起展示,以兼容两个不同版本的fragment,使得两个不同版本的fragment可以完美融合。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出根据本申请一个实施例的一种用于兼容不同版本的碎片信息的方法流程图;

图2示出根据本申请一个实施例的一种用于兼容不同版本的碎片信息的用户设备结构图;

图3示出可被用于实施本申请中所述的各个实施例的示例性系统。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本申请作进一步详细描述。

在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(例如,中央处理器(Central Processing Unit,CPU))、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RandomAccess Memory,RAM)和/或非易失性内存等形式,如只读存储器(Read Only Memory,ROM)或闪存(Flash Memory)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(Phase-Change Memory,PCM)、可编程随机存取存储器(Program mable Random Access Memory,PRAM)、静态随机存取存储器(Static Rand om-Access Memory,SRAM)、动态随机存取存储器(Dynamic Random AccessMemory,DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、数字多功能光盘(Digital Versatile Disc,DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。

本申请所指设备包括但不限于用户设备、网络设备、或用户设备与网络设备通过网络相集成所构成的设备。所述用户设备包括但不限于任何一种可与用户进行人机交互(例如通过触摸板进行人机交互)的移动电子产品,例如智能手机、平板电脑等,所述移动电子产品可以采用任意操作系统,如Android操作系统、iOS操作系统等。其中,所述网络设备包括一种能够按照事先设定或存储的指令,自动进行数值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific IntegratedCircuit,ASIC)、可编程逻辑器件(Programmable Logic Device,PLD)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、数字信号处理器(Digital Signal Processor,DSP)、嵌入式设备等。所述网络设备包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云;在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟超级计算机。所述网络包括但不限于互联网、广域网、城域网、局域网、VPN网络、无线自组织网络(Ad Hoc网络)等。优选地,所述设备还可以是运行于所述用户设备、网络设备、或用户设备与网络设备、网络设备、触摸终端或网络设备与触摸终端通过网络相集成所构成的设备上的程序。

当然,本领域技术人员应能理解上述设备仅为举例,其他现有的或今后可能出现的设备如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

在本申请的描述中,“多个”的含义是两个或者更多,除非另有明确具体的限定。

图1示出根据本申请一个实施例的一种用于兼容不同版本的碎片信息的方法流程图,该方法包括步骤S11、步骤S12、步骤S13和步骤S14。在步骤S11中,用户设备创建继承于第一碎片信息的碎片桥接信息,其中,所述碎片桥接信息持有第二碎片信息对应的第二碎片对象的引用,所述第一碎片信息与所述第二碎片信息对应不同的版本;在步骤S12中,用户设备在所述碎片桥接信息中,根据用于展示所述碎片桥接信息的页面对应的上下文对象,创建所述第二碎片信息对应的宿主回调信息对应的宿主回调对象,并将所述宿主回调对象赋值给所述第二碎片对象中的宿主回调变量;在步骤S13中,用户设备在所述碎片桥接信息中重写至少一个第一方法,在所述至少一个第一方法中的每个第一方法中调用所述第二碎片对象中与该第一方法相对应的第二方法;在步骤S14中,用户设备在所述碎片桥接信息中重写第一创建视图方法,在所述第一创建视图方法中调用所述第二碎片对象中与所述第一创建视图方法对应的第二创建视图方法,并将所述第二创建视图方法返回的第二视图赋值给所述第二碎片对象中的视图变量,并将所述第二视图作为所述第一创建视图方法的返回值。

在步骤S11中,用户设备创建继承于第一碎片信息的碎片桥接信息,其中,所述碎片桥接信息持有第二碎片信息对应的第二碎片对象的引用,所述第一碎片信息与所述第二碎片信息对应不同的版本。在一些实施例中,碎片信息(例如,Fragment类)是一种可以嵌入在页面(例如,Activity)中的UI片段,Fragment不能够单独使用,需要嵌套在Activity中使用,Fragment的生命周期受到宿主Activity的生命周期的影响。在一些实施例中,在用户设备上会同时存在不同版本的Fragment,例如,若用户设备对应的操作系统是Android3.0以上的版本,此时,该操作系统中存在系统原生版本的Fragment API(android.app.Fragment),若用户设备对应的操作系统是Android3.0以下的版本,可以在当前应用中接入support v4包,该support v4包中存在另一套版本的Fragment API(android.support.v4.app.Fragment),通常情况下,这两个版本的Fragment API是不能同时使用的,因为它们是两个管理体系,但有些是时候我们需要将两个版本的fragment放在一起展示,例如,在当前应用中接入了一个第三方sdk,该sdk和当前应用本身使用的是不同版本的Fragment API,而且必须把它们放在同一个Activity中,但双方都不能轻易改变API。在一些实施例中,第一碎片信息是原生版本的Fragment(android.app.Fragment),第二碎片信息是v4版本的Fragment(android.support.v4.app.Fragment),或者,第一碎片信息是v4版本的Fragment(android.support.v4.app.Fragment),第二碎片信息是原生版本的Fragment(android.app.Fragment)。在一些实施例中,在当前应用中创建继承于第一碎片信息的碎片桥接信息(例如,FragmentBridge类),FragmentBridge的父类是第一碎片信息,优选地,FragmentBridge与第二碎片信息位于同一个包(例如,android.app包,或者,android.support.v4.app包)内,以便于FragmentBridge可以直接调用第二碎片信息中的protected类型的变量及缺省类型的变量,FragmentBridge中持有第二碎片信息对应的第二碎片对象(例如,Fragment对象)的引用(例如,通过FragmentBridge中的fragmentV4变量持有第二碎片对象的引用,this.fragmentV4=fragment),该第二碎片对象的引用可以通过传入参数为第二碎片对象的构造方法(例如,FragmentBridge(Fragment fragment)构造方法)传入FragmentBridge,也可以通过其他传入参数为第二碎片对象的相关方法(例如,void setFragment(Fragment fragment)方法)传入FragmentBridge。在一些实施例中,通过重写(例如,Override)FragmentBridge的父类第一碎片信息中的多个生命周期回调方法(例如,onStart()方法),在每个生命周期回调方法中调用FragmentBridge持有的第二碎片对象中与该生命周期回调方法相对应的生命周期相关方法(例如,fragmentV4.performStart()),可以将第二碎片信息的生命周期桥接到继承于第一碎片信息的碎片桥接信息的生命周期中,通过桥接生命周期,可以使得当前应用表面上是在调用碎片桥接信息的父类第一碎片信息的API,但实质上是在调用第二碎片信息的API,从而可以在当前页面上同时使用这两个版本的Fragment API,使得两个不同版本的fragment可以放在同一个Activity中一起展示,以兼容两个不同版本的fragment,使得两个不同版本的fragment可以完美融合。

在步骤S12中,用户设备在所述碎片桥接信息中,根据用于展示所述碎片桥接信息的页面对应的上下文对象,创建所述第二碎片信息对应的宿主回调信息对应的宿主回调对象,并将所述宿主回调对象赋值给所述第二碎片对象中的宿主回调变量。在一些实施例中,需要将用于展示FragmentBridge的当前页面对应的上下文对象(例如,Context)传入FragmentBridge,该上下文对象的可以通过传入参数为上下文对象的构造方法(例如,FragmentBridge(Context context)构造方法)传入FragmentBridge,也可以通过其他传入参数为上下文对象的相关方法(例如,void setContext(Context context)方法)传入FragmentBridge。在一些实施例中,根据传入FragmentBridge的上下文对象,创建第二碎片信息对应的宿主回调信息(例如,HostCallbacks)对应的宿主回调对象,例如,newHostCallbacks(getActivity(context)),其中,getActivity(context)方法是用于根据上下文对象得到对应的Activity对象,HostCall backs的构造方法的传入参数为Activity对象。在一些实施例中,将创建的宿主回调对象赋值给第二碎片对象中的宿主回调变量(例如,mHost变量,frag mentV4.mHost=new HostCallbacks(getActivity(context))),这样可以使得第二碎片对象在其各个生命周期内可以通过mHost变量所持有的HostCallbacks对象回调宿主(即当前页面对应的Activity对象)中的相关方法,实现桥接到继承于第一碎片信息的碎片桥接信息中的第二碎片对象与宿主Activity对象之间的正常通信,从而通过构建宿主回调对象(HostCallbacks)的方式,确保第二碎片对象的各个生命周期可以正确执行,以在当前页面上通过桥接的方式正常展示第二碎片对象。

在步骤S13中,用户设备在所述碎片桥接信息中重写至少一个第一方法,在所述至少一个第一方法中的每个第一方法中调用所述第二碎片对象中与该第一方法相对应的第二方法。在一些实施例中,在FragmentBridge中重写其父类第一碎片信息中的至少一个第一方法,该至少一个第一方法包括第一碎片信息的多个生命周期回调方法(例如,onAttach、onDettach、onStart、onResume、onCreate、onViewCreated、onPause、onStop、onLowMemory、onDestroyView、onDestroy、onHiddenChanged),在一些实施例中,在重写的每个第一方法(例如,onPause)中调用第二碎片对象中与该第一方法相对应的第二方法(例如,performPause),例如,@Override public void onPause(){super.onPause();fragmentV4.performPause();},其中,super.onPause()是调用FragmentBridge其父类第一碎片对象中的onPause方法,fragmentV4.performPause()是调用第二碎片对象中的performPause方法,onPause方法与performPause方法相对应。

在步骤S14中,用户设备在所述碎片桥接信息中重写第一创建视图方法,在所述第一创建视图方法中调用所述第二碎片对象中与所述第一创建视图方法对应的第二创建视图方法,并将所述第二创建视图方法返回的第二视图赋值给所述第二碎片对象中的视图变量,并将所述第二视图作为所述第一创建视图方法的返回值。在一些实施例中,在碎片桥接信息中重写第一创建视图方法(例如,View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState)方法),该第一创建视图方法用于创建fragment对应的视图对象(View)并提供给用于展示该碎片桥接信息的页面对象(Activity)。在一些实施例中,在碎片桥接信息的onCreateView方法中调用第二碎片对象中的第二创建视图方法(同样也是onCreateView方法),并将第二创建视图方法返回的View对象赋值给第二碎片对象中的视图变量(例如,mView变量,fragmentV4.mView=fragmentV4.performCreateView(inflater,container,savedInstanceState),并将该View对象作为碎片桥接信息的onCreateView方法的返回值提供给用于展示该碎片桥接信息的Activity,以在当前页面上正常展示第二碎片对象。在一些实施例中,还会将第一创建视图方法的传入参数container(ViewGroup容器对象,用于装载fragment对应的视图对象)复制给第二碎片对象中对应的容器变量,例如,mContainer变量,fragmentV4.mContainer=container。在一些实施例中,还会将第二创建视图方法返回的View对象赋值给第二碎片对象中的内部视图变量,例如,mInnerView变量,if(fragmentV4.mView!=null){fragmentV4.mInnerView=fragmentV4.mView;}。

在一些实施例中,所述方法还包括:用户设备创建所述第二碎片对象;创建所述碎片桥接信息对应的碎片桥接对象,将所述第二碎片对象传入所述碎片桥接对象,并将所述碎片桥接对象添加到当前页面对应的页面对象中,以在所述当前页面中展示所述第二碎片对象。在一些实施例中,在实际使用的时候,在需要添加第二碎片对象的当前页面对应的Activity对象中,创建第二碎片信息对应的第二碎片对象,例如,Fragment fragment=newFragment(),然后创建FragmentBridge对象,并将该fragment对象传入该FragmentBridge对象,并将该FragmentBridge对象添加到该Activity对象中,以在当前页面中通过桥接的方式展示第二碎片对象。

在一些实施例中,所述将所述第二碎片对象传入所述碎片桥接对象,包括:调用所述碎片桥接对象的第三方法,其中,所述第三方法的传入参数为所述第二碎片对象。在一些实施例中,可以先创建FragmentBridge对象,然后通过调用FragmentBridge对象中的传入参数为第二碎片对象的第三方法,将第二碎片对象传入该FragmentBridge对象。

在一些实施例中,所述创建所述碎片桥接信息对应的碎片桥接对象,将所述第二碎片对象传入所述碎片桥接对象,包括:根据所述碎片桥接信息的构造方法,创建所述碎片桥接信息对应的碎片桥接对象,其中,所述构造方法的传入参数为所述第二碎片对象。在一些实施例中,可以通过调用Fragme ntBridge的传入参数为第二碎片对象的构造方法,在创建FragmentBridge对象的同时,将第二碎片对象传入该FragmentBridge对象。

在一些实施例中,所述碎片桥接信息与所述第二碎片信息位于同一个包内。在一些实施例中,FragmentBridge持有第二碎片信息对应的第二碎片对象的引用,为了便于FragmentBridge可以直接调用第二碎片信息中的protected类型的变量及缺省类型的变量,需要将FragmentBridge与第二碎片信息位于同一个包内。在一些实施例中,根据第二碎片信息所在的包对应的路径信息(例如,“android.support.v4.app”),在当前应用中创建一个相同路径信息的包,并在该包内创建FragmentBridge。

在一些实施例中,所述方法还包括:用户设备在所述碎片桥接信息中创建第三方法,其中,所述第三方法的传入参数为所述第二碎片对象。在一些实施例中,为了FragmentBridge持有第二碎片信息对应的第二碎片对象的引用,可以在FragmentBridge中创建传入参数为第二碎片对象的第三方法,通过调用该第三方法,可以将第二碎片对象传入FragmentBridge,以使FragmentBridge持有第二碎片对象的引用。例如,第三方法可以是void setFragment(Fragment fragment)。

在一些实施例中,所述第三方法为所述碎片桥接信息的构造方法。在一些实施例中,为了FragmentBridge持有第二碎片信息对应的第二碎片对象的引用,可以在FragmentBridge中创建传入参数为第二碎片对象的构造方法,可以在通过调用该构造方法创建FragmentBridge对象的时候将第二碎片对象传入FragmentBridge,以使FragmentBridge持有第二碎片对象的引用。例如,构造方法可以是FragmentBridge(Fragment fragment)。

在一些实施例中,所述方法还包括:用户设备在所述碎片桥接信息中创建第四方法,其中,所述第四方法的传入参数为所述上下文对象。在一些实施例中,需要将用于展示FragmentBridge的当前页面对应的上下文对象(例如,Context)传入FragmentBridge,可以在FragmentBridge中创建传入参数为Context对象的第四方法,通过调用该第四方法,可以将当前页面对应的Context对象传入FragmentBridge。例如,第四方法可以是voidsetContext(Context context)。在一些实施例中,还可以在FragmentBridge中创建传入参数为第二碎片对象与Context对象的第四方法,通过调用该第四方法,可以将当前页面对应的Context对象及第二碎片对象传入FragmentBridge。例如,第四方法可以是void set(Context context,Fragment fragment)。

在一些实施例中,所述第四方法为所述碎片桥接信息的构造方法。在一些实施例中,需要将用于展示FragmentBridge的当前页面对应的Context对象传入FragmentBridge,可以在FragmentBridge中创建传入参数为Context对象的构造方法,可以在通过调用该构造方法创建FragmentBridge对象的时候将Context对象传入FragmentBridge例如,构造方法可以是FragmentBridge(Fragment fragment)。例如,构造方法可以是void setContext(Context context)。在一些实施例中,还可以在FragmentBridge中创建传入参数为第二碎片对象与Context对象的构造方法,可以在通过调用该构造方法创建FragmentBridge对象的时候将Context对象及第二碎片对象传入FragmentBridge例如,构造方法可以是FragmentBridge(Fragment fragment,Context context)。

在一些实施例中,所述至少一个第一方法包括多个生命周期回调方法。在一些实施例中,该多个生命周期回调方法包括但不限于onAttach、onDettach、onStart、onResume、onCreate、onViewCreated、onPause、onStop、onLowMemory、onDestroyView、onDestroy、onHiddenChanged等方法。

在一些实施例中,所述在所述至少一个第一方法中的每个第一方法中调用所述第二碎片对象中与该第一方法相对应的第二方法,包括:在所述至少一个第一方法中除所述第一创建视图方法对应的视图创建回调方法以外的每个第一方法中调用所述第一碎片信息中的该第一方法,并调用所述第二碎片对象中与该第一方法相对应的第二方法。在一些实施例中,通过重写该至少一个第一方法,在除第一创建视图方法(例如,onCreateView方法)以外的每个第一方法(例如,onStop方法)中调用FragmentBridge的父类第一碎片信息中的该第一方法(例如,super.onStop()),并调用第二碎片对象中与该第一方法相对于的第二方法(例如,fragmentV4.performStop())。

在一些实施例中,所述根据用于展示所述碎片桥接信息的页面对应的上下文对象,创建所述第二碎片信息对应的宿主回调信息对应的宿主回调对象,包括:根据用于展示所述碎片桥接信息的页面对应的上下文对象,获取所述上下文对象对应的页面对象;根据所述页面对象,创建所述第二碎片信息对应的宿主回调信息对应的宿主回调对象。在一些实施例中,根据传入FragmentBridge的用于展示FragmentBridge的当前页面对应的Context对象,通过调用getActivity(Context context)方法获取该Context对象对应的Activity对象,然后根据该Activity对象,创建第二碎片信息对应的宿主回调信息(例如,HostCallbacks)对应的宿主回调对象,例如,new HostCallbacks(getActivity(context)),其中,HostCallbacks的构造方法的传入参数为Activity对象。

在一些实施例中,所述方法还包括:用户设备创建所述第二碎片信息对应的宿主回调信息,其中,所述宿主回调信息继承于所述第二碎片信息对应的碎片宿主回调信息,所述宿主回调信息持有所述页面对象的引用。在一些实施例中,在当前应用中创建继承于第二碎片信息对应的碎片宿主回调信息(例如,FragmentHostCallback类)的宿主回调信息(例如,HostCallbacks类),HostCallbacks类的父类是FragmentHostCallback类。在一些实施例中,FragmentHostCallback类与第二碎片信息相对应,两者版本一致,两者都是原生版本的API,或者,两者都是v4版本的API。在一些实施例中,第二碎片信息是原生版本的Fragment(android.app.Fragment),此时,FragmentHostCallback类也是原生版本的FragmentHostCallback(android.app.FragmentHostCallback)。在一些实施例中,第二碎片信息是v4版本的Fragment(android.support.v4.app.Fragment),此时,FragmentHostCallback类也是v4版本的Fragment HostCallback(android.support.v4.app.FragmentHostCallback)。在一些实施例中,HostCallbacks类持有用于展示FragmentBridge的当前页面对应的Activity对象的引用(例如,通过HostCallbacks中的activity变量持有Activity对象的引用,this.activity=activity),该Activity对象的引用可以通过传入参数为Activity对象的构造方法(例如,HostCallbacks(ActivityActivity)构造方法)传入HostCallbacks类,也可以通过其他传入参数为Activity对象的相关方法(例如,void setActivity(Activity activity)方法)传入HostCallbacks类。

在一些实施例中,所述碎片宿主回调信息为泛型信息,所述宿主回调信息的泛型类型为页面对象类型。在一些实施例中,FragmentHostCallback为泛型类,例如,FragmentHostCallback,HostCallbacks在继承FragmentHost Callback时指定具体的泛型类型为Activity对象类型,例如,class HostCallbacks extendsFragmentHostCallback

在一些实施例中,所述方法还包括:用户设备在所述宿主回调信息中创建第二构造方法,其中,所述第二构造方法的传入参数为所述页面对象。在一些实施例中,可以在HostCallbacks中创建传入参数为Activity对象的构造方法,可以在通过调用该构造方法创建HostCallbacks对象的时候将Activity对象传入HostCallbacks,以使HostCallbacks持有Activity对象的引用。例如,构造方法可以是HostCallbacks(Activity activity),public HostCallbacks(Activity activity){this.activity=activity;},通过HostCallbacks中的activity变量持有Activity对象的引用。

在一些实施例中,所述方法还包括:用户设备在所述第二构造方法中调用所述碎片宿主回调信息中对应的第三构造方法,所述第三构造方法的传入参数包括所述页面对象及所述上下文对象。在一些实施例中,在HostCallbacks的构造方法中调用其父类FragmentHostCallback的构造方法,FragmentHostCallback的构造方法的传入参数包括Activity对象及Context对象,优选地,FragmentHostCallback的构造方法的传入参数还包括句柄(例如,Handler)对象以及窗口动画(例如,windowAnimations)对象,例如,publicHostCallbacks(Activity activity){super(activity,activity,new Handler(),0);this.activity=activity;}。

在一些实施例中,所述方法还包括:用户设备在所述宿主回调信息中重写页面对象回调方法,将所述页面对象作为所述页面对象回调方法的返回值。在一些实施例中,在HostCallbacks中重写其父类FragmentHostCallback中的页面对象回调方法(例如,Activity onGetHost()),将HostCallbacks持有的Activity对象作为该页面对象回调方法的返回值。

在一些实施例中,所述方法还包括:用户设备在所述宿主回调信息中重写至少一个第五方法,在所述至少一个第五方法中的每个第五方法中调用所述页面对象中与该第五方法相对应的第六方法,并根据所述第六方法的返回值,确定该第五方法的返回值。在一些实施例中,在HostCallbacks中重写其父类FragmentHostCallback中的至少一个第五方法(例如,boolean onHasView()),在该至少一个第五方法中的每个第五方法中调用HostCallbacks所持有的Activity对象中与该第五方法对应的第六方法,例如,activity.getWindow(),并根据第六方法的返回值,确定该第五方法的返回值,例如,@Override public boolean onHasView(){final Window w=activity.getWindow();return(w!=null&&w.peekDecorView()!=null);}。在一些实施例中,HostCall backs中重写的第五方法包括但不限于onDump、onShouldSaveFragmentState、onGetLayoutInflater、onShouldShowRequestPermissionRationale、onFindViewById、onHasView等。

在一些实施例中,所述根据所述第六方法的返回值,确定该第五方法的返回值,包括:将所述第六方法的返回值作为该第五方法的返回值。在一些实施例中,可以直接将第六方法的返回值作为该第五方法的返回值,例如,该第五方法为LayoutInflateronGetLayoutInflater(),第六方法为activity.getLa youtInflater().cloneInContext(activity),@Override public LayoutInflater onGet LayoutInflater(){returnactivity.getLayoutInflater().cloneInContext(activity);}。

图2示出根据本申请一个实施例的一种用于兼容不同版本的碎片信息的用户设备结构图,该设备包括一一模块11、一二模块12、一三模块13和一四模块14。一一模块11,用于创建继承于第一碎片信息的碎片桥接信息,其中,所述碎片桥接信息持有第二碎片信息对应的第二碎片对象的引用,所述第一碎片信息与所述第二碎片信息对应不同的版本;一二模块12,用于在所述碎片桥接信息中,根据用于展示所述碎片桥接信息的页面对应的上下文对象,创建所述第二碎片信息对应的宿主回调信息对应的宿主回调对象,并将所述宿主回调对象赋值给所述第二碎片对象中的宿主回调变量;一三模块13,用于在所述碎片桥接信息中重写至少一个第一方法,在所述至少一个第一方法中的每个第一方法中调用所述第二碎片对象中与该第一方法相对应的第二方法;一四模块14,用于在所述碎片桥接信息中重写第一创建视图方法,在所述第一创建视图方法中调用所述第二碎片对象中与所述第一创建视图方法对应的第二创建视图方法,并将所述第二创建视图方法返回的第二视图赋值给所述第二碎片对象中的视图变量,并将所述第二视图作为所述第一创建视图方法的返回值。

一一模块11,用于创建继承于第一碎片信息的碎片桥接信息,其中,所述碎片桥接信息持有第二碎片信息对应的第二碎片对象的引用,所述第一碎片信息与所述第二碎片信息对应不同的版本。在一些实施例中,碎片信息(例如,Fragment类)是一种可以嵌入在页面(例如,Activity)中的UI片段,Fragment不能够单独使用,需要嵌套在Activity中使用,Fragment的生命周期受到宿主Activity的生命周期的影响。在一些实施例中,在用户设备上会同时存在不同版本的Fragment,例如,若用户设备对应的操作系统是Android3.0以上的版本,此时,该操作系统中存在系统原生版本的Fragment API(android.app.Fragment),若用户设备对应的操作系统是Android3.0以下的版本,可以在当前应用中接入support v4包,该support v4包中存在另一套版本的Fragment API(android.support.v4.app.Fragment),通常情况下,这两个版本的Fragment API是不能同时使用的,因为它们是两个管理体系,但有些是时候我们需要将两个版本的fragment放在一起展示,例如,在当前应用中接入了一个第三方sdk,该sdk和当前应用本身使用的是不同版本的Fragment API,而且必须把它们放在同一个Activity中,但双方都不能轻易改变API。在一些实施例中,第一碎片信息是原生版本的Fragment(android.app.Fragment),第二碎片信息是v4版本的Fragment(android.support.v4.app.Fragment),或者,第一碎片信息是v4版本的Fragment(android.support.v4.app.Fragment),第二碎片信息是原生版本的Fragment(android.app.Fragment)。在一些实施例中,在当前应用中创建继承于第一碎片信息的碎片桥接信息(例如,FragmentBridge类),FragmentBridge的父类是第一碎片信息,优选地,FragmentBridge与第二碎片信息位于同一个包(例如,android.app包,或者,android.support.v4.app包)内,以便于FragmentBridge可以直接调用第二碎片信息中的protected类型的变量及缺省类型的变量,FragmentBridge中持有第二碎片信息对应的第二碎片对象(例如,Fragment对象)的引用(例如,通过FragmentBridge中的fragmentV4变量持有第二碎片对象的引用,this.fragmentV4=fragment),该第二碎片对象的引用可以通过传入参数为第二碎片对象的构造方法(例如,FragmentBridge(Fragment fragment)构造方法)传入FragmentBridge,也可以通过其他传入参数为第二碎片对象的相关方法(例如,void setFr agment(Fragment fragment)方法)传入FragmentBridge。在一些实施例中,通过重写(例如,Override)FragmentBridge的父类第一碎片信息中的多个生命周期回调方法(例如,onStart()方法),在每个生命周期回调方法中调用FragmentBridge持有的第二碎片对象中与该生命周期回调方法相对应的生命周期相关方法(例如,fragmentV4.performStart()),可以将第二碎片信息的生命周期桥接到继承于第一碎片信息的碎片桥接信息的生命周期中,通过桥接生命周期,可以使得当前应用表面上是在调用碎片桥接信息的父类第一碎片信息的API,但实质上是在调用第二碎片信息的API,从而可以在当前页面上同时使用这两个版本的Fragment API,使得两个不同版本的fragment可以放在同一个Activity中一起展示,以兼容两个不同版本的fragment,使得两个不同版本的fragment可以完美融合。

一二模块12,用于在所述碎片桥接信息中,根据用于展示所述碎片桥接信息的页面对应的上下文对象,创建所述第二碎片信息对应的宿主回调信息对应的宿主回调对象,并将所述宿主回调对象赋值给所述第二碎片对象中的宿主回调变量。在一些实施例中,需要将用于展示FragmentBridge的当前页面对应的上下文对象(例如,Context)传入FragmentBridge,该上下文对象的可以通过传入参数为上下文对象的构造方法(例如,FragmentBridge(Context context)构造方法)传入FragmentBridge,也可以通过其他传入参数为上下文对象的相关方法(例如,void setContext(Context context)方法)传入FragmentBridge。在一些实施例中,根据传入FragmentBridge的上下文对象,创建第二碎片信息对应的宿主回调信息(例如,HostCallbacks)对应的宿主回调对象,例如,newHostCallbacks(getActivity(context)),其中,getActivity(context)方法是用于根据上下文对象得到对应的Activity对象,HostCallbacks的构造方法的传入参数为Activity对象。在一些实施例中,将创建的宿主回调对象赋值给第二碎片对象中的宿主回调变量(例如,mHost变量,fragmentV4.mHost=new HostCallbacks(getActivity(context))),这样可以使得第二碎片对象在其各个生命周期内可以通过mHost变量所持有的HostCallbacks对象回调宿主(即当前页面对应的Activity对象)中的相关方法,实现桥接到继承于第一碎片信息的碎片桥接信息中的第二碎片对象与宿主Activity对象之间的正常通信,从而通过构建宿主回调对象(HostCallbacks)的方式,确保第二碎片对象的各个生命周期可以正确执行,以在当前页面上通过桥接的方式正常展示第二碎片对象。

一三模块13,用于在所述碎片桥接信息中重写至少一个第一方法,在所述至少一个第一方法中的每个第一方法中调用所述第二碎片对象中与该第一方法相对应的第二方法。在一些实施例中,在FragmentBridge中重写其父类第一碎片信息中的至少一个第一方法,该至少一个第一方法包括第一碎片信息的多个生命周期回调方法(例如,onAttach、onDettach、onStart、onResume、onCreate、onViewCreated、onPause、onStop、onLowMemory、onDestroyView、onDestroy、onHiddenChanged),在一些实施例中,在重写的每个第一方法(例如,onPause)中调用第二碎片对象中与该第一方法相对应的第二方法(例如,performPause),例如,@Override public void onPause(){super.onPause();fragmentV4.performPause();},其中,super.onPause()是调用FragmentBridge其父类第一碎片对象中的onPause方法,fragmentV4.performPause()是调用第二碎片对象中的performPause方法,onPause方法与performPause方法相对应。

一四模块14,用于在所述碎片桥接信息中重写第一创建视图方法,在所述第一创建视图方法中调用所述第二碎片对象中与所述第一创建视图方法对应的第二创建视图方法,并将所述第二创建视图方法返回的第二视图赋值给所述第二碎片对象中的视图变量,并将所述第二视图作为所述第一创建视图方法的返回值。在一些实施例中,在碎片桥接信息中重写第一创建视图方法(例如,View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState)方法),该第一创建视图方法用于创建fragment对应的视图对象(View)并提供给用于展示该碎片桥接信息的页面对象(Activity)。在一些实施例中,在碎片桥接信息的onCreateView方法中调用第二碎片对象中的第二创建视图方法(同样也是onCreateView方法),并将第二创建视图方法返回的View对象赋值给第二碎片对象中的视图变量(例如,mView变量,fragmentV4.mView=fragmentV4.performCreateView(inflater,container,savedInstanceState),并将该View对象作为碎片桥接信息的onCreateView方法的返回值提供给用于展示该碎片桥接信息的Activity,以在当前页面上正常展示第二碎片对象。在一些实施例中,还会将第一创建视图方法的传入参数container(ViewGroup容器对象,用于装载fragment对应的视图对象)复制给第二碎片对象中对应的容器变量,例如,mContainer变量,fragmentV4.mContainer=container。在一些实施例中,还会将第二创建视图方法返回的View对象赋值给第二碎片对象中的内部视图变量,例如,mInnerView变量,if(fragmentV4.mView!=null){fragmentV4.mInnerView=fragmentV4.mView;}。

在一些实施例中,所述设备还用于:创建所述第二碎片对象;创建所述碎片桥接信息对应的碎片桥接对象,将所述第二碎片对象传入所述碎片桥接对象,并将所述碎片桥接对象添加到当前页面对应的页面对象中,以在所述当前页面中展示所述第二碎片对象。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。

在一些实施例中,所述将所述第二碎片对象传入所述碎片桥接对象,包括:调用所述碎片桥接对象的第三方法,其中,所述第三方法的传入参数为所述第二碎片对象。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。

在一些实施例中,所述创建所述碎片桥接信息对应的碎片桥接对象,将所述第二碎片对象传入所述碎片桥接对象,包括:根据所述碎片桥接信息的构造方法,创建所述碎片桥接信息对应的碎片桥接对象,其中,所述构造方法的传入参数为所述第二碎片对象。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。

在一些实施例中,所述碎片桥接信息与所述第二碎片信息位于同一个包内。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。

在一些实施例中,所述设备还用于:在所述碎片桥接信息中创建第三方法,其中,所述第三方法的传入参数为所述第二碎片对象。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。

在一些实施例中,所述第三方法为所述碎片桥接信息的构造方法。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。

在一些实施例中,所述设备还用于:在所述碎片桥接信息中创建第四方法,其中,所述第四方法的传入参数为所述上下文对象。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。

在一些实施例中,所述第四方法为所述碎片桥接信息的构造方法。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。

在一些实施例中,所述至少一个第一方法包括多个生命周期回调方法。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。

在一些实施例中,所述在所述至少一个第一方法中的每个第一方法中调用所述第二碎片对象中与该第一方法相对应的第二方法,包括:在所述至少一个第一方法中除所述第一创建视图方法对应的视图创建回调方法以外的每个第一方法中调用所述第一碎片信息中的该第一方法,并调用所述第二碎片对象中与该第一方法相对应的第二方法。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。

在一些实施例中,所述根据用于展示所述碎片桥接信息的页面对应的上下文对象,创建所述第二碎片信息对应的宿主回调信息对应的宿主回调对象,包括:根据用于展示所述碎片桥接信息的页面对应的上下文对象,获取所述上下文对象对应的页面对象;根据所述页面对象,创建所述第二碎片信息对应的宿主回调信息对应的宿主回调对象。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。

在一些实施例中,所述设备还用于:创建所述第二碎片信息对应的宿主回调信息,其中,所述宿主回调信息继承于所述第二碎片信息对应的碎片宿主回调信息,所述宿主回调信息持有所述页面对象的引用。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。

在一些实施例中,所述碎片宿主回调信息为泛型信息,所述宿主回调信息的泛型类型为页面对象类型。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。

在一些实施例中,所述设备还用于:在所述宿主回调信息中创建第二构造方法,其中,所述第二构造方法的传入参数为所述页面对象。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。

在一些实施例中,所述设备还用于:在所述第二构造方法中调用所述碎片宿主回调信息中对应的第三构造方法,所述第三构造方法的传入参数包括所述页面对象及所述上下文对象。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。

在一些实施例中,所述设备还用于:在所述宿主回调信息中重写页面对象回调方法,将所述页面对象作为所述页面对象回调方法的返回值。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。

在一些实施例中,所述设备还用于:在所述宿主回调信息中重写至少一个第五方法,在所述至少一个第五方法中的每个第五方法中调用所述页面对象中与该第五方法相对应的第六方法,并根据所述第六方法的返回值,确定该第五方法的返回值。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。

在一些实施例中,所述根据所述第六方法的返回值,确定该第五方法的返回值,包括:将所述第六方法的返回值作为该第五方法的返回值。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。

图3示出了可被用于实施本申请中所述的各个实施例的示例性系统。

如图3所示在一些实施例中,系统300能够作为各所述实施例中的任意一个设备。在一些实施例中,系统300可包括具有指令的一个或多个计算机可读介质(例如,系统存储器或NVM/存储设备320)以及与该一个或多个计算机可读介质耦合并被配置为执行指令以实现模块从而执行本申请中所述的动作的一个或多个处理器(例如,(一个或多个)处理器305)。

对于一个实施例,系统控制模块310可包括任意适当的接口控制器,以向(一个或多个)处理器305中的至少一个和/或与系统控制模块310通信的任意适当的设备或组件提供任意适当的接口。

系统控制模块310可包括存储器控制器模块330,以向系统存储器315提供接口。存储器控制器模块330可以是硬件模块、软件模块和/或固件模块。

系统存储器315可被用于例如为系统300加载和存储数据和/或指令。对于一个实施例,系统存储器315可包括任意适当的易失性存储器,例如,适当的DRAM。在一些实施例中,系统存储器315可包括双倍数据速率类型四同步动态随机存取存储器(DDR4SDRAM)。

对于一个实施例,系统控制模块310可包括一个或多个输入/输出(I/O)控制器,以向NVM/存储设备320及(一个或多个)通信接口325提供接口。

例如,NVM/存储设备320可被用于存储数据和/或指令。NVM/存储设备320可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(HDD)、一个或多个光盘(CD)驱动器和/或一个或多个数字通用光盘(DVD)驱动器)。

NVM/存储设备320可包括在物理上作为系统300被安装在其上的设备的一部分的存储资源,或者其可被该设备访问而不必作为该设备的一部分。例如,NVM/存储设备320可通过网络经由(一个或多个)通信接口325进行访问。

(一个或多个)通信接口325可为系统300提供接口以通过一个或多个网络和/或与任意其他适当的设备通信。系统300可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信。

对于一个实施例,(一个或多个)处理器305中的至少一个可与系统控制模块310的一个或多个控制器(例你如,存储器控制器模块330)的逻辑封装在一起。对于一个实施例,(一个或多个)处理器305中的至少一个可与系统控制模块310的一个或多个控制器的逻辑封装在一起以形成系统级封装(SiP)。对于一个实施例,(一个或多个)处理器305中的至少一个可与系统控制模块310的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例,(一个或多个)处理器305中的至少一个可与系统控制模块310的一个或多个控制器的逻辑集成在同一模具上以形成片上系统(SoC)。

在各个实施例中,系统300可以但不限于是:服务器、工作站、台式计算设备或移动计算设备(例如,膝上型计算设备、持有计算设备、平板电脑、上网本等)。在各个实施例中,系统300可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,系统300包括一个或多个摄像机、键盘、液晶显示器(LCD)屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(ASIC)和扬声器。

本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机代码,当所述计算机代码被执行时,如前任一项所述的方法被执行。

本申请还提供了一种计算机程序产品,当所述计算机程序产品被计算机设备执行时,如前任一项所述的方法被执行。

本申请还提供了一种计算机设备,所述计算机设备包括:

一个或多个处理器;

存储器,用于存储一个或多个计算机程序;

当所述一个或多个计算机程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如前任一项所述的方法。

需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。本领域技术人员应能理解,计算机程序指令在计算机可读介质中的存在形式包括但不限于源文件、可执行文件、安装包文件等,相应地,计算机程序指令被计算机执行的方式包括但不限于:该计算机直接执行该指令,或者该计算机编译该指令后再执行对应的编译后程序,或者该计算机读取并执行该指令,或者该计算机读取并安装该指令后再执行对应的安装后程序。在此,计算机可读介质可以是可供计算机访问的任意可用的计算机可读存储介质或通信介质。

通信介质包括藉此包含例如计算机可读指令、数据结构、程序模块或其他数据的通信信号被从一个系统传送到另一系统的介质。通信介质可包括有导的传输介质(诸如电缆和线(例如,光纤、同轴等))和能传播能量波的无线(未有导的传输)介质,诸如声音、电磁、RF、微波和红外。计算机可读指令、数据结构、程序模块或其他数据可被体现为例如无线介质(诸如载波或诸如被体现为扩展频谱技术的一部分的类似机制)中的已调制数据信号。术语“已调制数据信号”指的是其一个或多个特征以在信号中编码信息的方式被更改或设定的信号。调制可以是模拟的、数字的或混合调制技术。

作为示例而非限制,计算机可读存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动的介质。例如,计算机可读存储介质包括,但不限于,易失性存储器,诸如随机存储器(RAM,DRAM,SRAM);以及非易失性存储器,诸如闪存、各种只读存储器(ROM,PROM,EPROM,EEPROM)、磁性和铁磁/铁电存储器(MRAM,FeRAM);以及磁性和光学存储设备(硬盘、磁带、CD、DVD);或其它现在已知的介质或今后开发的能够存储供计算机系统使用的计算机可读信息/数据。

在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

相关技术
  • 一种用于兼容不同版本的碎片信息的方法与设备
  • 一种不同版本配置文件自动兼容方法及装置
技术分类

06120112231472