CN111596906B - 一种基于MVPVM的Android应用开发方法、装置、设备及介质 - Google Patents

一种基于MVPVM的Android应用开发方法、装置、设备及介质 Download PDF

Info

Publication number
CN111596906B
CN111596906B CN202010419513.1A CN202010419513A CN111596906B CN 111596906 B CN111596906 B CN 111596906B CN 202010419513 A CN202010419513 A CN 202010419513A CN 111596906 B CN111596906 B CN 111596906B
Authority
CN
China
Prior art keywords
file
view
code file
model
annotation
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
CN202010419513.1A
Other languages
English (en)
Other versions
CN111596906A (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.)
Shanghai Weimeng Enterprise Development Co ltd
Original Assignee
Shanghai Weimeng Enterprise Development 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 Shanghai Weimeng Enterprise Development Co ltd filed Critical Shanghai Weimeng Enterprise Development Co ltd
Priority to CN202010419513.1A priority Critical patent/CN111596906B/zh
Publication of CN111596906A publication Critical patent/CN111596906A/zh
Application granted granted Critical
Publication of CN111596906B publication Critical patent/CN111596906B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Human Computer Interaction (AREA)
  • Library & Information Science (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本申请公开了一种基于MVPVM的Android应用开发方法、装置、设备及介质,包括:创建Android应用代码文件;Android应用代码文件包括页面代码文件、视图布局代码文件、表示层代码文件、Model模型代码文件和ViewModel视图模型代码文件;在页面代码文件的目标页面中放置目标JAVA注解;利用编译器对所述Android应用代码文件进行编译,得到目标class类文件;在编译过程中,所述编译器利用目标JAVA注解中的文件名称找到对应的代码文件;在页面启动时,利用JAVA反射机制获取对应的JAVA注解中的所述文件名称,然后根据所述文件名称初始化对应的View视图、Model模型、Presenter表示层和ViewModel视图模型以及进行相应的依赖处理与绑定。能够自动实现各代码的初始化工作以及各种类的依赖与绑定,从而提升程序开发效率。

Description

一种基于MVPVM的Android应用开发方法、装置、设备及介质
技术领域
本申请涉及软件开发技术领域,特别涉及一种基于MVPVM的Android应用开发方法、装置、设备及介质。
背景技术
现有的Android应用开发,主要是通过手工创建应用界面、编写界面上各种视图控件(View)的放置位置;手工创建代码文件,并在代码文件中将视图控件(View)与视图控件模型(Model)在视图模型(ViewModel)中进行绑定关联;并且,还需要在表示层(Presenter)中添加视图控件(View)的事件响应与逻辑处理;同时,在视图模型(ViewModel)中,还需要编写与后端服务器接口交互的请求和响应逻辑。通常,一个Android应用,包含有很多的界面,每个界面都有很多的视图控件(View)、对应的视图控件模型(Model)、以及每个界面的表示层(Presenter)和视图模型(ViewModel),因此,开发人员需要花费大量的时间与精力重复这些工作。
目前Android应用开发常用的技术包括:MVC即模型(Model)-视图(View)-控制器(Controller),最早的软件设计典范,将业务逻辑、数据、界面显示分享的方法组织代码;缺点是视图(View)会在控制器(Controller)中直接访问模型(Model),即所有的数据与界面交互逻辑都在控制器中实现,代码会越来越多,逻辑会越来越严重耦合,维护成本也会越来越高;MVP即模型(Model)-视图(View)-表示层(Presenter),基于MVC演化而来,与MVC最大的区别在于:视图(View)不在直接访问模型(Model),而是通过表示层(Presenter)进行间接通信;缺点是代码文件会越来越多,也进一步增加了代码复杂度;表示层(Presenter)同样也含有大量的逻辑,导致越来越臃肿,维护困难;如果特写视图(View)有很多的渲染操作,则会导致表示层(Presenter)与该视图(View)过于紧密,一旦视图(View)变更,则表示层(Presenter)也需要变量,降低了预期的低耦合度和复用性;MVVM即模型(Model)-视图(View)-视图模型(ViewModel),基于MVP进一步的演化,视图模型(ViewModel)即处理视图(View)和模型(Model)之间的数据交互,可以将一个大的视图(View)拆分成更小更独立的各个子视图(SubView),每个视图(View)都有一个对应的模型(Model),以及处理它们的视图模型(ViewModel),缺点是随着视图(View)的最小化拆分,代码文件会很多,但是耦合度会降低不少,代码逻辑也更加清晰;但是视图(View)仍然需要处理渲染与用户交互(事件响应与处理)。
目前,现有的Android应用开发常用的技术,需要开发人员手工创建各种不同的代码文件,以及手工完成各代码的初始化工作、各种类的依赖与绑定。
发明内容
有鉴于此,本申请的目的在于提供一种基于MVPVM的Android应用开发方法、装置、设备及介质,能够自动实现各代码的初始化工作以及各种类的依赖与绑定,从而提升程序开发效率。其具体方案如下:
第一方面,本申请公开了一种基于MVPVM的Android应用开发方法,包括:
创建Android应用代码文件;所述Android应用代码文件包括页面代码文件、视图布局代码文件、表示层代码文件、Model模型代码文件和ViewModel视图模型代码文件;
在所述页面代码文件的目标页面中放置对应的目标JAVA注解;所述目标JAVA注解中包括所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和ViewModel视图模型代码文件对应的文件名称;
利用编译器对所述Android应用代码文件进行编译,得到对应的目标class类文件;在编译过程中,所述编译器利用所述目标JAVA注解中的所述文件名称找到所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和所述ViewModel视图模型代码文件;
在页面启动时,利用JAVA反射机制获取对应的JAVA注解中的所述文件名称,然后根据所述文件名称初始化对应的View视图、Model模型、Presenter表示层和ViewModel视图模型以及进行相应的依赖处理与绑定。
可选的,所述在所述页面代码文件的目标页面中放置对应的目标JAVA注解之前,还包括:
配置所述目标JAVA注解。
可选的,所述配置所述目标JAVA注解,包括:
对预设JAVA注解进行所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和ViewModel视图模型代码文件的文件名称赋值操作,将赋值后的该预设JAVA注解作为所述目标JAVA注解。
可选的,所述配置所述目标JAVA注解,包括:
对表示层注解、视图注解、视图模型注解、Model模型注解分别进行对应的所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和ViewModel视图模型代码文件的文件名称赋值操作,将赋值后的所述表示层注解、所述视图注解、所述视图模型注解、所述Model模型注解作为所述目标JAVA注解。
可选的,所述利用编译器对所述Android应用代码文件进行编译,得到对应的目标class类文件,包括:
利用编译器对所述Android应用代码文件进行编译;
基于ASM插桩技术将编译得到的页面class类文件中的预设JAVA注解分解为对应的表示层注解、视图注解、视图模型注解、模型注解,得到所述目标class类文件。
可选的,所述Android应用开发方法,还包括:
在页面启动时,若对应的JAVA注解中的赋值信息不合法,则进行页面报错。
可选的,所述Android应用开发方法,还包括:
在表示层实现Android应用中用户交互对应的事件响应处理逻辑。
第二方面,本申请公开了一种基于MVPVM的Android应用开发装置,包括:
应用代码创建模块,用于创建Android应用代码文件;所述Android应用代码文件包括页面代码文件、视图布局代码文件、表示层代码文件、Model模型代码文件和ViewModel视图模型代码文件;
JAVA注解放置模块,用于在所述页面代码文件的目标页面中放置对应的目标JAVA注解;所述目标JAVA注解中包括所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和ViewModel视图模型代码文件对应的文件名称;
代码文件编译模块,用于利用编译器对所述Android应用代码文件进行编译,得到对应的目标class类文件;在编译过程中,所述编译器利用所述目标JAVA注解中的所述文件名称找到所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和所述ViewModel视图模型代码文件;
页面启动处理模块,用于在页面启动时,利用JAVA反射机制获取对应的JAVA注解中的所述文件名称,然后根据所述文件名称初始化对应的View视图、Model模型、Presenter表示层和ViewModel视图模型以及进行相应的依赖处理与绑定。
第三方面,本申请公开了一种基于MVPVM的Android应用开发设备,包括处理器和存储器;其中,
所述存储器,用于保存计算机程序;
所述处理器,用于执行所述计算机程序以实现前述的Android应用开发方法。
第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述的Android应用开发方法。
可见,本申请先创建Android应用代码文件;所述Android应用代码文件包括页面代码文件、视图布局代码文件、表示层代码文件、Model模型代码文件和ViewModel视图模型代码文件,然后在所述页面代码文件的目标页面中放置对应的目标JAVA注解;所述目标JAVA注解中包括所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和ViewModel视图模型代码文件对应的文件名称,之后利用编译器对所述Android应用代码文件进行编译,得到对应的目标class类文件;在编译过程中,所述编译器利用所述目标JAVA注解中的所述文件名称找到所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和所述ViewModel视图模型代码文件,在页面启动时,利用JAVA反射机制获取对应的JAVA注解中的所述文件名称,然后根据所述文件名称初始化对应的View视图、Model模型、Presenter表示层和ViewModel视图模型以及进行相应的依赖处理与绑定。这样,在目标页面中放置对应的目标JAVA注解,然后进行编译,在页面启动时,利用JAVA反射机制获取JAVA注解中的文件名称,然后进行初始化以及相应的依赖处理与绑定,能够自动实现各代码的初始化工作以及各种类的依赖与绑定,从而提升程序开发效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种基于MVPVM的Android应用开发方法流程图;
图2为本申请公开的一种具体的依赖处理与绑定示意图;
图3为本申请公开的一种具体的基于MVPVM的Android应用开发方法流程图;
图4为本申请公开的一种具体的MVPVM关联化配置方法示意图;
图5为本申请公开的一种具体的基于MVPVM的Android应用开发流程图;
图6为本申请公开的一种具体的基于ASM进行字节码插桩处理示意图;
图7为本申请公开的一种编译阶段Java字节码操作流程图;
图8为本申请公开的一种程序运行时通过Java反射机制初始化MVPVM的流程图;
图9为本申请公开的一种具体的基于MVPVM的Android应用开发方法流程图;
图10为本申请公开的一种具体的MVPVM关联化配置方法示意图;
图11为本申请公开的一种基于MVPVM的Android应用开发装置结构示意图;
图12为本申请公开的一种基于MVPVM的Android应用开发设备结构图;
图13为本申请公开的一种电子终端结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,现有的Android应用开发常用的技术,需要开发人员手工创建各种不同的代码文件,以及手工完成各代码的初始化工作、各种类的依赖与绑定。为此,本申请公开了一种基于MVPVM的Android应用开发方案,能够自动实现各代码的初始化工作以及各种类的依赖与绑定,从而提升程序开发效率。
参见图1所示,本申请实施例公开了一种基于MVPVM的Android应用开发方法,包括:
步骤S11:创建Android应用代码文件;所述Android应用代码文件包括页面代码文件、视图布局代码文件、表示层代码文件、Model模型代码文件和ViewModel视图模型代码文件。
其中,MVPVM(即模型-视图-表示层-视图模型)是基于MVVM设计的进一步创新,即模型(Model)-视图(View)-表示层(Presenter)-视图模型(ViewModel)。
在具体的实施方式中,本申请实施例可以在表示层实现Android应用中用户交互对应的事件响应处理逻辑。也即,将视图(View)中的用户交互(事件响应与处理)分离至表示层(Presenter)中,由表示层(Presenter)单独处理,而视图(View)只需关心渲染即可。
步骤S12:在所述页面代码文件的目标页面中放置对应的目标JAVA注解;所述目标JAVA注解中包括所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和ViewModel视图模型代码文件对应的文件名称。
在具体的实施方式中,本实施例可以先配置所述目标JAVA注解,然后在所述页面代码文件的目标页面中放置对应的目标JAVA注解。具体,可以在目标页面中的页面类名上方放置所述目标JAVA注解。
也即,本实施例可以基于Java注解对各应用页面,做MVPVM关联化配置。先配置JAVA注解,然后在指定的页面上,添加该配置好的注解,在编译时,JAVA编译器就能通过文件名称,找到对应的代码文件。
步骤S13:利用编译器对所述Android应用代码文件进行编译,得到对应的目标class类文件;在编译过程中,所述编译器利用所述目标JAVA注解中的所述文件名称找到所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和所述ViewModel视图模型代码文件。
这样,在编译时可以自动校验程序的正确性与合法性。
步骤S14:在页面启动时,利用JAVA反射机制获取对应的JAVA注解中的所述文件名称,然后根据所述文件名称初始化对应的View视图、Model模型、Presenter表示层和ViewModel视图模型以及进行相应的依赖处理与绑定。
也即,运行阶段,在页面启动时,利用Java反射机制获取Java注解中MVPVM的属性值,该属性值即指定使用视图文件的名称、模型文件的名称、表示层文件的名称,以及视图模型文件的名称,然后初始化视图(View)、模型(Model)、表示层(Presenter)和视图模型(ViewModel),并将这四部分做相应的依赖处理与绑定。
例如,参见图2所示,本申请实施例公开了一种具体的依赖处理与绑定示意图,初始化对应的View视图、Model模型、Presenter表示层和ViewModel视图模型,对View视图和ViewModel视图模型进行依赖绑定,对Model模型和ViewModel视图模型进行依赖和绑定,对View视图和Presenter表示层进行依赖绑定,对Presenter表示层和ViewModel视图模型进行关联处理。自动关联页面的元素(如:按钮、输入框等)与相应元素的数据模型。
可见,本申请实施例先创建Android应用代码文件;所述Android应用代码文件包括页面代码文件、视图布局代码文件、表示层代码文件、Model模型代码文件和ViewModel视图模型代码文件,然后在所述页面代码文件的目标页面中放置对应的目标JAVA注解;所述目标JAVA注解中包括所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和ViewModel视图模型代码文件对应的文件名称,之后利用编译器对所述Android应用代码文件进行编译,得到对应的目标class类文件;在编译过程中,所述编译器利用所述目标JAVA注解中的所述文件名称找到所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和所述ViewModel视图模型代码文件,在页面启动时,利用JAVA反射机制获取对应的JAVA注解中的所述文件名称,然后根据所述文件名称初始化对应的View视图、Model模型、Presenter表示层和ViewModel视图模型以及进行相应的依赖处理与绑定。这样,在目标页面中放置对应的目标JAVA注解,然后进行编译,在页面启动时,利用JAVA反射机制获取JAVA注解中的文件名称,然后进行初始化以及相应的依赖处理与绑定,能够自动实现各代码的初始化工作以及各种类的依赖与绑定,从而提升程序开发效率。
参见图3所示,本申请实实例公开了一种具体的基于MVPVM的Android应用开发方法,包括:
步骤S21:创建Android应用代码文件;所述Android应用代码文件包括页面代码文件、视图布局代码文件、表示层代码文件、Model模型代码文件和ViewModel视图模型代码文件。
步骤S22:对预设JAVA注解进行所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和ViewModel视图模型代码文件的文件名称赋值操作,将赋值后的该预设JAVA注解作为所述目标JAVA注解。
例如,参见图4所示,本申请实施例公开了一种具体的MVPVM关联化配置方法示意图,配置预设JAVA注解@MVPVM,也即赋值给注解@MVPVM,给定注解@MVPVM表示层文件名称、视图文件名称、视图模型文件名称、模型文件名称。
步骤S23:在所述页面代码文件的目标页面中放置对应的目标JAVA注解;所述目标JAVA注解中包括所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和ViewModel视图模型代码文件对应的文件名称。
例如,参见图5所示,本申请实施例公开了一种具体的基于MVPVM的Android应用开发流程图,首先创建页面代码文件、视图布局代码文件、表示层代码文件、模型代码文件、视图模型代码文件,然后配置注解@MVPVM,即给该注解赋值(view=视图布局代码文件名称,model=模型代码文件名称,presenter=表示层代码文件名称,viewmodel=视图模型代码文件名称),之后在指定的页面上,添加该配置好的注解,即在编译时,JAVA编译器就能通过文件名称,找到对应的代码文件。
步骤S24:利用编译器对所述Android应用代码文件进行编译。
步骤S25:基于ASM插桩技术将编译得到的页面class类文件中的预设JAVA注解分解为对应的表示层注解、视图注解、视图模型注解、模型注解,得到目标class类文件。
可以理解的是注解@MVPVM是一个复合型注解,它可以分解为另外4个注解:表示层注解@Presenter、视图注解@View、视图模型注解@ViewModel和模型注解@Model。本实施例可以基于ASM插桩技术将编译得到的页面class类文件中的预设JAVA注解分解为对应的表示层注解、视图注解、视图模型注解、模型注解。也即,用ASM插桩技术,将注解@MVPVM替换为另外4个功能单一的注解,并将注解@MVPVM中的各项值,分别对应赋给相应的单一注解。ASM插桩就是在指定的代码地方,插入想要添加的代码;class文件为JAVA编译器编译后的只含有JAVA字节码数据结构的文件,其数据结构类似汇编特性;ASM插桩就是修改Java字节码,改变编译后的数据结构,达到最终效果的一种方法。参见图6所示,本申请公开了一种具体的基于ASM进行字节码插桩处理示意图。
例如,参见图7所示,本申请实施例公开了一种编译阶段Java字节码操作流程图,本实施例可以在编译阶段,利用ASM(即Assemble,汇编)对Java已经编译生成的class文件进行插桩处理,扫描所有页面并分析是否含有MVPVM相关的Java注解,做相应的处理,也即,将@MVPVM分解为另外4个注解:表示层注解@Presenter、视图注解@View、视图模型注解@ViewModel和模型注解@Model,然后将注解@MVPVM代码编译文件(编译后为class文件)中删除,然后在@MVPVM代码所在的地方,添加上述4个注解代码。
步骤S26:在页面启动时,利用JAVA反射机制获取对应的JAVA注解中的所述文件名称,向然后根据所述文件名称初始化对应的View视图、Model模型、Presenter表示层和ViewModel视图模型以及进行相应的依赖处理与绑定。
参见图8所示,本申请实施例公开了一种程序运行时通过Java反射机制初始化MVPVM的流程图。启动页面,通过利用JAVA反射机制,先判断是否含有视图注解@View并且相应的赋值信息是否合法,若含有视图注解@View并且相应的赋值信息合法,则初始化View以及View的子控件如按钮,然后将View与页面controller进行关联,并暂时缓存View;之后判断是否含有模型注解@Model并且相应的赋值信息是否合法,若含有模型注解@Model并且相应的赋值信息合法,则初始化Model,并暂时缓存Model;之后判断是否含有视图模型注解@ViewModel并且相应的赋值信息是否合法,若含有视图模型注解@ViewModel并且相应的赋值信息合法,则初始化ViewModel,与当前页面绑定并将View和Model赋值给ViewModel;然后判断是否含有表示层注解@Presenter并且相应的赋值信息是否合法,若含有表示层注解@Presenter并且相应的赋值信息合法,则初始化Presenter,并将View和ViewModel赋值给Presenter,最后,页面开始运行。若含有视图注解@View并且相应的赋值信息不合法,或含有模型注解@Model并且相应的赋值信息不合法,或含有视图模型注解@ViewModel并且相应的赋值信息不合法,或表示层注解@Presenter并且相应的赋值信息不合法,则页面报错。也即,在页面启动时,若对应的JAVA注解中的赋值信息不合法,则进行页面报错。
这样,代码能够正常运行,应用程序也不会崩溃退出;页面能够正确加载指定的视图文件,正确显示视图中各个子控件的内容(如:按钮的名称,颜色,文字大小,按钮应该显示的位置区域等);视图文件能够正确的(通过视图模型文件)间接关联模型文件,模型中的数据值能正确反应到视图控件中(如:文本框的内容来自于模型)页面中的视图控件能够正确响应用户的操作(如:点击按钮,文本输入等),并能够通过表示层(或者间接通过视图模型,基于网络请求,获取服务端返回的数据)正确的反馈给用户预期的结果。
参见图9所示,本申请实施例公开了一种具体的基于MVPVM的Android应用开发方法,包括:
步骤S31:创建Android应用代码文件;所述Android应用代码文件包括页面代码文件、视图布局代码文件、表示层代码文件、Model模型代码文件和ViewModel视图模型代码文件。
步骤S32:对表示层注解、视图注解、视图模型注解、Model模型注解分别进行对应的所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和ViewModel视图模型代码文件的文件名称赋值操作,将赋值后的所述表示层注解、所述视图注解、所述视图模型注解、所述Model模型注解作为所述目标JAVA注解。
例如,参见图10所示,本申请实施例公开了一种具体的MVPVM关联化配置方法示意图,分别对表示层注解@Presenter,视图注解@View,视图模型注解@ViewModel,模型注解@Model进行配置,也即,将表示层文件名称赋值给表示层注解、视图文件名称赋值给视图注解、视图模型文件名称赋值给视图模型注解、Model模型文件名称赋值给Model模型。
步骤S33:在所述页面代码文件的目标页面中放置对应的目标JAVA注解;所述目标JAVA注解中包括所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和ViewModel视图模型代码文件对应的文件名称。
步骤S34:利用编译器对所述Android应用代码文件进行编译,得到对应的目标class类文件;在编译过程中,所述编译器利用所述目标JAVA注解中的所述文件名称找到所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和所述ViewModel视图模型代码文件。
步骤S35:在页面启动时,利用JAVA反射机制获取对应的JAVA注解中的所述文件名称,然后根据所述文件名称初始化对应的View视图、Model模型、Presenter表示层和ViewModel视图模型以及进行相应的依赖处理与绑定。
参见图11所示,本申请实施例公开了一种基于MVPVM的Android应用开发装置,包括:
应用代码创建模块11,用于创建Android应用代码文件;所述Android应用代码文件包括页面代码文件、视图布局代码文件、表示层代码文件、Model模型代码文件和ViewModel视图模型代码文件;
JAVA注解放置模块12,用于在所述页面代码文件的目标页面中放置对应的目标JAVA注解;所述目标JAVA注解中包括所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和ViewModel视图模型代码文件对应的文件名称;
代码文件编译模块13,用于利用编译器对所述Android应用代码文件进行编译,得到对应的目标class类文件;在编译过程中,所述编译器利用所述目标JAVA注解中的所述文件名称找到所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和所述ViewModel视图模型代码文件;
页面启动处理模块14,用于在页面启动时,利用JAVA反射机制获取对应的JAVA注解中的所述文件名称,然后根据所述文件名称初始化对应的View视图、Model模型、Presenter表示层和ViewModel视图模型以及进行相应的依赖处理与绑定。
可见,本申请实施例先创建Android应用代码文件;所述Android应用代码文件包括页面代码文件、视图布局代码文件、表示层代码文件、Model模型代码文件和ViewModel视图模型代码文件,然后在所述页面代码文件的目标页面中放置对应的目标JAVA注解;所述目标JAVA注解中包括所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和ViewModel视图模型代码文件对应的文件名称,之后利用编译器对所述Android应用代码文件进行编译,得到对应的目标class类文件;在编译过程中,所述编译器利用所述目标JAVA注解中的所述文件名称找到所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和所述ViewModel视图模型代码文件,在页面启动时,利用JAVA反射机制获取对应的JAVA注解中的所述文件名称,然后根据所述文件名称初始化对应的View视图、Model模型、Presenter表示层和ViewModel视图模型以及进行相应的依赖处理与绑定。这样,在目标页面中放置对应的目标JAVA注解,然后进行编译,在页面启动时,利用JAVA反射机制获取JAVA注解中的文件名称,然后进行初始化以及相应的依赖处理与绑定,能够自动实现各代码的初始化工作以及各种类的依赖与绑定,从而提升程序开发效率。
并且,所述Android应用开发装置还包括JAVA注解配置模块,用于配置所述目标JAVA注解。
在一种具体的实施方式中,所述JAVA注解配置模块,具体用于对预设JAVA注解进行所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和ViewModel视图模型代码文件的文件名称赋值操作,将赋值后的该预设JAVA注解作为所述目标JAVA注解。相应的,所述代码文件编译模块13,具体用于利用编译器对所述Android应用代码文件进行编译;基于ASM插桩技术将编译得到的页面class类文件中的预设JAVA注解分解为对应的表示层注解、视图注解、视图模型注解、模型注解,得到所述目标class类文件。
在另一种具体的实施方式中,所述JAVA注解配置模块,具体用于对表示层注解、视图注解、视图模型注解、Model模型注解分别进行对应的所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和ViewModel视图模型代码文件的文件名称赋值操作,将赋值后的所述表示层注解、所述视图注解、所述视图模型注解、所述Model模型注解作为所述目标JAVA注解。
所述Android应用开发装置还包括页面报错模块,用于在页面启动时,若对应的JAVA注解中的赋值信息不合法,则进行页面报错。
应用代码创建模块11还用于在表示层实现Android应用中用户交互对应的事件响应处理逻辑。
参见图12所示,本申请实施例公开了一种基于MVPVM的Android应用开发设备,包括处理器21和存储器22;其中,所述存储器22,用于保存计算机程序;所述处理器21,用于执行所述计算机程序,以实现前述实施例公开的基于MVPVM的Android应用开发方法。
关于上述基于MVPVM的Android应用开发方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
参见图13所示,本申请实施例公开了一种电子终端20,包括前述实施例中公开的处理器21和存储器22。关于上述处理器21具体可以执行的步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
进一步的,本实施例中的电子终端20,还可以具体包括电源23、通信接口24、输入输出接口25和通信总线26;其中,所述电源23用于为所述终端20上的各硬件设备提供工作电压;所述通信接口24能够为所述终端20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;所述输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
进一步的,本申请实施例还公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的基于MVPVM的Android应用开发方法。
关于上述基于MVPVM的Android应用开发方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的一种基于MVPVM的Android应用开发方法、装置、设备及介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种基于MVPVM的Android应用开发方法,其特征在于,包括:
创建Android应用代码文件;所述Android应用代码文件包括页面代码文件、视图布局代码文件、表示层代码文件、Model模型代码文件和ViewModel视图模型代码文件;
在所述页面代码文件的目标页面中放置对应的目标JAVA注解;所述目标JAVA注解中包括所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和ViewModel视图模型代码文件对应的文件名称;
利用编译器对所述Android应用代码文件进行编译,得到对应的目标class类文件;在编译过程中,所述编译器利用所述目标JAVA注解中的所述文件名称找到所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和所述ViewModel视图模型代码文件;
在页面启动时,利用JAVA反射机制获取对应的JAVA注解中的所述文件名称,然后根据所述文件名称初始化对应的View视图、Model模型、Presenter表示层和ViewModel视图模型以及进行相应的依赖处理与绑定。
2.根据权利要求1所述的Android应用开发方法,其特征在于,所述在所述页面代码文件的目标页面中放置对应的目标JAVA注解之前,还包括:
配置所述目标JAVA注解。
3.根据权利要求2所述的Android应用开发方法,其特征在于,所述配置所述目标JAVA注解,包括:
对预设JAVA注解进行所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和ViewModel视图模型代码文件的文件名称赋值操作,将赋值后的该预设JAVA注解作为所述目标JAVA注解。
4.根据权利要求2所述的Android应用开发方法,其特征在于,所述配置所述目标JAVA注解,包括:
对表示层注解、视图注解、视图模型注解、Model模型注解分别进行对应的所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和ViewModel视图模型代码文件的文件名称赋值操作,将赋值后的所述表示层注解、所述视图注解、所述视图模型注解、所述Model模型注解作为所述目标JAVA注解。
5.根据权利要求3所述的Android应用开发方法,其特征在于,所述利用编译器对所述Android应用代码文件进行编译,得到对应的目标class类文件,包括:
利用编译器对所述Android应用代码文件进行编译;
基于ASM插桩技术将编译得到的页面class类文件中的预设JAVA注解分解为对应的表示层注解、视图注解、视图模型注解、模型注解,得到所述目标class类文件。
6.根据权利要求1所述的Android应用开发方法,其特征在于,还包括:
在页面启动时,若对应的JAVA注解中的赋值信息不合法,则进行页面报错。
7.根据权利要求1至6任一项所述的Android应用开发方法,其特征在于,还包括:
在表示层实现Android应用中用户交互对应的事件响应处理逻辑。
8.一种基于MVPVM的Android应用开发装置,其特征在于,包括:
应用代码创建模块,用于创建Android应用代码文件;所述Android应用代码文件包括页面代码文件、视图布局代码文件、表示层代码文件、Model模型代码文件和ViewModel视图模型代码文件;
JAVA注解放置模块,用于在所述页面代码文件的目标页面中放置对应的目标JAVA注解;所述目标JAVA注解中包括所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和ViewModel视图模型代码文件对应的文件名称;
代码文件编译模块,用于利用编译器对所述Android应用代码文件进行编译,得到对应的目标class类文件;在编译过程中,所述编译器利用所述目标JAVA注解中的所述文件名称找到所述视图布局代码文件、所述表示层代码文件、所述Model模型代码文件和所述ViewModel视图模型代码文件;
页面启动处理模块,用于在页面启动时,利用JAVA反射机制获取对应的JAVA注解中的所述文件名称,然后根据所述文件名称初始化对应的View视图、Model模型、Presenter表示层和ViewModel视图模型以及进行相应的依赖处理与绑定。
9.一种基于MVPVM的Android应用开发设备,其特征在于,包括处理器和存储器;其中,
所述存储器,用于保存计算机程序;
所述处理器,用于执行所述计算机程序以实现如权利要求1至7任一项所述的Android应用开发方法。
10.一种计算机可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的Android应用开发方法。
CN202010419513.1A 2020-05-18 2020-05-18 一种基于MVPVM的Android应用开发方法、装置、设备及介质 Active CN111596906B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010419513.1A CN111596906B (zh) 2020-05-18 2020-05-18 一种基于MVPVM的Android应用开发方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010419513.1A CN111596906B (zh) 2020-05-18 2020-05-18 一种基于MVPVM的Android应用开发方法、装置、设备及介质

Publications (2)

Publication Number Publication Date
CN111596906A CN111596906A (zh) 2020-08-28
CN111596906B true CN111596906B (zh) 2023-07-07

Family

ID=72182854

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010419513.1A Active CN111596906B (zh) 2020-05-18 2020-05-18 一种基于MVPVM的Android应用开发方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN111596906B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106528261A (zh) * 2016-12-02 2017-03-22 武汉斗鱼网络科技有限公司 应用页面初始化的编译控制装置及方法
CN106648587A (zh) * 2016-09-28 2017-05-10 福州宇嘉软件科技有限公司 一种基于注解的Web应用代码生成方法
CN109597621A (zh) * 2018-08-24 2019-04-09 天津字节跳动科技有限公司 封装Dagger的方法、装置、Dagger、解耦方法、装置、设备及介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106980504B (zh) * 2017-03-28 2022-07-01 腾讯科技(深圳)有限公司 一种应用程序开发方法及其工具、设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106648587A (zh) * 2016-09-28 2017-05-10 福州宇嘉软件科技有限公司 一种基于注解的Web应用代码生成方法
CN106528261A (zh) * 2016-12-02 2017-03-22 武汉斗鱼网络科技有限公司 应用页面初始化的编译控制装置及方法
CN109597621A (zh) * 2018-08-24 2019-04-09 天津字节跳动科技有限公司 封装Dagger的方法、装置、Dagger、解耦方法、装置、设备及介质

Also Published As

Publication number Publication date
CN111596906A (zh) 2020-08-28

Similar Documents

Publication Publication Date Title
US20200218588A1 (en) API Notebook Tool
EP3605324B1 (en) Application development method and tool, and storage medium thereof
CN100444158C (zh) 使用外部计划主题的Web网页绘制机制
Nixon Learning PHP, MySQL & JavaScript: With jQuery, CSS & HTML5
CN112016128A (zh) 基于CRUD和权限管理的vue开发方法及装置
CN112015420A (zh) 表单渲染方法、装置、计算机设备及存储介质
Fursin Collective knowledge: organizing research projects as a database of reusable components and portable workflows with common interfaces
CN110795181A (zh) 基于跳转协议的应用程序界面展示方法、装置及电子设备
CN111797020A (zh) 基于动态字节码的mock数据方法及装置
CN113010168B (zh) 一种基于场景树的用户界面生成方法
WO2024066825A1 (zh) 页面项目开发方法、装置、设备、介质及产品
CN111596906B (zh) 一种基于MVPVM的Android应用开发方法、装置、设备及介质
Jansen Learning TypeScript
CN102193789A (zh) 一种实现可配置跳转链接的方法和设备
JP7014960B2 (ja) 情報処理装置、サーバ、その処理方法及びプログラム
CN114911541A (zh) 配置信息的处理方法、装置、电子设备及存储介质
CN111459483B (zh) 界面的处理方法和装置
CN114238831A (zh) Html代码片段的处理方法、系统、电子设备和存储介质
US20040194022A1 (en) Kernel configuration tool
JP7319516B2 (ja) プログラム、情報処理装置及びその制御方法
CN111694723B (zh) 产品在h5下运行时对节点及组件编辑的方法、存储介质
Murdock et al. Towards adaptive web agents
US20150020042A1 (en) Adaptive Developer Experience Based on Project Types and Process Templates
KR20240009129A (ko) 유저 계정의 입력 정보에 기반한 어플리케이션 자동 제작 시스템
CN112988139A (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
GR01 Patent grant
GR01 Patent grant