全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:4009-999-999

应用程序开发方法及系统与流程

  Activity(基础应用程序组件)是安卓系统开发的基本单元。每一个Activity被给予一个窗口,在上面可以绘制用户接口。窗口通常充满屏幕,但也可以小于屏幕而浮于其它窗口之上。一个应用程序通常由多个Activities组成,各个Activities之间通常是松耦合关系。通常,应用程序中会有一个Activity被指定为mainActivity,在第一次启动应用程序的时候呈现给用户,为了完成不同的动作,一个Activity可以启动另一个Activity。传统的安卓系统在程序启动后,每次跳转到新页面时,需要做经过以下流程,如图1所示:

  传统的安卓系统没有提供对Activity的管控单元,也没有严格参数规范。使用时,必须由程序开发者手动建立Activity管控机制,对页面参数逐一编写针对性代码解析。在程序运行一段时间后,大量无主的Activity充斥内存空间,造成内存重复性浪费;同时,无主的Activity实例的存在还会对程序开发者的工作造成了一定干扰和影响,例如,当程序涉及到异步访问、网络延迟请求、管道处理、多线程作业模块时设计逻辑必须非常严谨,否则会频繁发生数据不同步、缓存未更新、数据操作失效、访问失效资源等,造成数据错误、程序卡死、闪退等现象。

  总之,现有的应用程序开发方法复杂,对程序开发者的要求较高,新手很难上手;过于面向对象设计,系统效率低;缺少管理,开发错误率高;页面数据交互复杂,冗余代码多,从而导致系统易出错。

  为解决上述技术问题,克服现有技术水平的缺点和不足,本发明提供一种应用程序开发方法及系统,将传统开发流程进行精简和筛选,去掉冗余和用不到的系统设置和操作,只留下必要的系统任务然后进行封装,将复杂的广义面向对象改为简单的过程化开发,程序员甚至可以不必精通安卓系统操作,只需编写自己的业务相关代码即可。最后通过IOAM(Inversion of Android Model,安卓模型反转容器)建立应用Activity容器,统一注入管控,简单易上手,而且开发效率高,页面交互简单,不易出错。

  创建Activity模型,将创建好的Activity模型放入IOAM容器进行管理;

应用程序开发方法及系统与流程

  根据具体的开发需求,通过所述IOAM容器启动对应的Activity模型,并进行参数解析和调用。

  作为一种可实施方式,所述根据开发需求,通过IOAM容器启动对应的Activity模型,并进行参数解析,实现调用,包括以下步骤:

  通过所述IOAM容器进入新页面,并将设置的所述Activity参数传入对应的Activity模型中;

  在进入新页面后,通过过程化框架流式处理对对应的Activity模型中的参数进行参数解析;

  作为一种可实施方式,在根据开发需求设置Activity参数之后还包括以下步骤:

  作为一种可实施方式,根据开发需求,设置Activity参数,包括以下步骤:

  对基础Activity类进行泛型参数处理、顶部工具栏通用样式定义及处理、底部工具栏通用样式处理、通用事物处理、fragment处理、以及地图插件集成处理;

  将处理后的所述基础Activity类进行封装并打包,形成新的Activity模型。

  作为一种可实施方式,所述将设置的Activity参数传入对应的Activity模型中,包括以下步骤:

  通过IOAM容器启动对应的Activity模型,同时将所述泛型参数数组传递到对应的Activity模型中。

  作为一种可实施方式,将所述泛型参数数组传递到对应的Activity模型中之后,还包括以下步骤:

  作为一种可实施方式,在效验成功后,利用反射class类型构造参数包,包括以下步骤:

  根据所述参数类型数组实例化所述外部参数类,得到所述参数包,并对所述参数包进行序列化之后保存于Bundle中。

  作为一种可实施方式,所述在进入新页面后,通过过程化框架流式处理对对应的Activity模型中的参数进行参数解析和调用,包括以下步骤:

  从Bundle中获取序列化后的所述参数包,并对所述参数包的完整做有效性效验;

  有效性效验成功后,获取所述参数包的对象,并对所述参数包的对象中的每个参数做逻辑合理性效验;

  相应地,基于同一发明构思,本发明还提供一种应用程序开发系统,包括创建模块和调用模块;

  所述创建模块,用于创建Activity模型,将创建好的Activity模型放入IOAM容器进行管理;

  所述调用模块,用于根据具体的开发需求,通过所述IOAM容器启动对应的Activity模型,并进行参数解析和调用。

  作为一种可实施方式,所述调用模块包括设置单元、传递单元、解析单元以及处理单元;

  所述传递单元,用于通过所述IOAM容器进入新页面,并将设置的所述Activity参数传入对应的Activity模型中;

  所述解析单元,用于在进入新页面后,通过过程化框架流式处理对对应的Activity模型中的参数进行参数解析;

  所述处理单元,用于在参数解析完成后,利用过程化框架统一处理各种系统设置,实现回调。

  所述处理子单元,用于对基础Activity类进行泛型参数处理、顶部工具栏通用样式定义及处理、底部工具栏通用样式处理、通用事物处理、fragment处理、以及地图插件集成处理;

  所述打包子单元,用于将处理后的所述基础Activity类进行封装并打包,形成新的Activity模型。

  作为一种可实施方式,所述传递单元包括创建子单元、赋值子单元以及传递子单元;

  所述赋值子单元,用于将启动Activity模型所需要的参数按次序赋值到所述泛型参数数组中;

  所述传递子单元,用于通过IOAM容器启动对应的Activity模型,同时将所述泛型参数数组传递到对应的Activity模型中。

  本发明提供的应用程序开发方法及系统,通过创建Activity模型,将创建好的Activity模型放入IOAM容器进行管理;根据具体的开发需求,通过所述IOAM容器启动对应的Activity模型,并进行参数解析和调用。其将传统开发流程进行精简和筛选,去掉冗余和用不到的系统设置和操作,只留下必要的系统任务然后进行封装,将复杂的广义面向对象改为简单的过程化开发。利用本发明提供的应用程序开发方法及系统,可以建立高效管理容器提高系统效率,通过过程化开发模型降低开发难度,通过减少开发代码量降低开发错误发生率。

  以下结合附图,对本发明上述的和另外的技术特征和优点进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的部分实施例,而不是全部实施例。

  S200,根据具体的开发需求,通过IOAM容器启动对应的Activity模型,并进行参数解析和调用。

  本发明中的IOAM容器专门负责Activity的引入和管理。IOAM在系统启动后会自动读取系统注册的Activity(manifest.xml中定义),并接管所有Activity实例的生成、调用、管理、释放等操作。

  上述实施例提供了一种基于Android系统原生语言的敏捷快速开发框架,将传统开发流程进行精简和筛选,去掉冗余和用不到的系统设置和操作,只留下必要的系统任务然后进行封装,将复杂的广义面向对象改为简单的过程化开发,程序员甚至可以不必完全精通安卓系统操作,只需编写自己的业务相关代码即可。

  S220,通过IOAM容器进入新页面,并将设置的Activity参数传入对应的Activity模型中;

  S230,在进入新页面后,通过过程化框架流式处理,对对应的Activity模型中的参数进行参数解析;

  S240,参数解析完成后,利用过程化框架统一处理各种系统设置,实现回调。

  通过上述步骤,可以集成基本框架,程序开发时程序员直接传入参数即可。进入新的页面后,直接使用参数即可,没有中间环节,效率高,出错少。

  作为一种可实施方式,在根据开发需求设置Activity参数之后还包括以下步骤:

  具体地,首先在页面启动/跳转时,根据开发业务需要,只需设置参数的类型并赋值即可,不必定义参数的名称,这样就避免了因大小写、缩写、编码不同等导致的参数名称前后不一致而带来的各种各样的错误。

  然后,通过IOAM容器进入新的页面并传入参数;老页面可以自动回归IOAM容器,没有垃圾内存。老页面在不用时,IOAM容器会自动回收,并根据系统资源情况进行任务调整,增加系统效率。

  待参数解析完成后,利用过程化框架统一处理各种系统定义,回调定义,系统事件处理。

  用户可以在规定好的方法和回调中完善自己的业务逻辑,系统运行,跳转到其他页面;待系统退出后,IOAM容器退出,释放内存。

  S211,基础Activity类进行泛型参数处理、顶部工具栏通用样式定义及处理、底部工具栏通用样式处理、通用事物处理、fragment处理、以及地图插件集成处理;

  S212,将处理后的基础Activity类进行封装并打包,形成新的Activity模型。

  上述基础Activity类即Android提供给的原生Activity类,是Android组件中最基本也是最为常见用的四大组件之一。泛型参数指的是对参数类型不做任何限制,可以随意定义参数的类型。泛型参数数组是指由泛型参数组合成的数组,数组中的个各个参数的类型可以不一样。

  本实施例以Android框架为基础,对Andorid程序启动后的处理流程进行重新定义,对Activity进行功能扩充,加入泛型参数处理(不限制参数个数,不需要定义参数名称)、顶部工具栏(top Bar)通用样式定义及处理、底部工具栏(bottom Bar)通用样式处理、通用事务处理(包括按钮处理、触摸屏处理、弹出框回调处理、异步处理等),fragment处理、地图插件集成处理,然后重新封装打包成新的Activity模板Saaf Activity。

  Saaf Activity是Saaf框架的主体,同时Saaf还可有自己独有的安卓控件、异步图片处理、网络处理封装,为开发人员实现傻瓜式开发提供良好的平台。

  S222,将启动Activity模型所需要的参数按次序赋值到泛型参数数组中;

  S223,通过IOAM容器启动对应的Activity模型,同时将泛型参数数组传递到对应的Activity模型中。

  程序员要启动某个Activity,首先创建一个泛型数组,即Object类型,Object是所有自定义类型的基类。每一个Activity都会有一个启动需要的入参的说明,按照说明将启动这个Activity需要用到的参数一一赋值到这个泛型数组之中,有几个写几个,忽略类型和参数名字,Saaf会通过反射机制识别参数类型;参数赋值后,通过IOAM容器直接启动新的Activity,同时参数传递到Activity。

  Activity接收到参数后,首先进行合法性校验,如果参数有异常则直接报错并记录日志,避免闪退。在系统运行时会将错误参数赋值成默认值,包含出错信息,并允许系统继续执行。如果是在用户使用过程中,即使系统确实有问题,也可以大大减少闪退带来的用户体验减弱。

  根据参数类型数组实例化外部参数类,得到参数包,并对参数包进行序列化之后保存于Bundle中。

  参数校验成功后,基于java反射机制,系统首先遍历泛型参数数组反射出参数类型数组cls.get Class(),然后,组装外部参数类,组装好后将类型数组作为参数创建构造函数方法,实例化参数类,并序列化数据包后放入系统bundle空间进行保存。至此,参数的准备工作结束。

  需要说明的是,Bundle是系统提供的供Activity使用的临时参数存储。

  S231,从Bundle中获取序列化后的参数包,并对参数包的完整做有效性效验;

  S232,有效性效验成功后,获取参数包的对象,并对参数包的对象中的每个参数做逻辑合理性效验;

  相应地,基于同一发明构思,本发明还提供一种应用程序开发系统,包括创建模块100和调用模块200;

  创建模块100用于创建Activity模型,将创建好的Activity模型放入IOAM容器进行管理;

  调用模块200用于根据具体的开发需求,通过IOAM容器启动对应的Activity模型,并进行参数解析和调用。

  作为一种可实施方式,调用模块200包括设置单元、传递单元、解析单元以及处理单元;

  传递单元用于通过IOAM容器进入新页面,并将设置的Activity参数传入对应的Activity模型中;

  解析单元用于在进入新页面后,通过过程化框架流式处理对对应的Activity模型中的参数进行参数解析;

  处理单元用于在参数解析完成后,利用过程化框架统一处理各种系统设置,实现回调。

  处理子单元用于对基础Activity类进行泛型参数处理、顶部工具栏通用样式定义及处理、底部工具栏通用样式处理、通用事物处理、fragment处理、以及地图插件集成处理;

  打包子单元用于将处理后的基础Activity类进行封装并打包,形成新的Activity模型。

  赋值子单元用于将启动Activity模型所需要的参数按次序赋值到泛型参数数组中;

  传递子单元用于通过IOAM容器启动对应的Activity模型,同时将泛型参数数组传递到对应的Activity模型中。

  下面结合具体的使用场景,对本发明实施例提供的应用程序开发方法及系统,进行进一步说明。

  根据业务需要,本发明只需定义参数的类型并赋值即可,不必定义参数的名称。这样就避免了因大小写、缩写、编码不同等导致的参数名称前后不一致而带来的各种各样的错误。

  首先根据Activity的类型,通过系统的内容对象创建intent对象。

  开发人员必须清楚的知道自己放的参数名字及大小写规范,一点都不能出错,“name”“Name”“NAME”是完全不同的参数,增加了程序员的工作量,尤其是涉及到复杂参数命名时,如:

  “MySchoolTeacher””mySchoolTeacher””myschoolTeacher””myschoolte acher””my_SchoolTeacher”等等很多,不同的习书写惯,不同的手误等都会造成参数获取不到或者获取不正确。更糟糕的是,由于编译器的容错越来越强,一些程序问题并不会引起程序崩溃或者编译器报错,这就加大了问题的隐藏深度;同时由于参数的存在,加大了程序员的记忆工作量,当Activity过多的时候,参数记忆混乱是很常见的现象,尤其是大小姐和多一个或者少一个字母。

  利用本发明只需要通过IOAM启动Activity,直接输入Activity的类型和参数数组,并且参数无需定义参数名称,甚至可以传入对象实例:整数、字符串、长整形、浮点、布尔、甚至对象类型皆可,开发者唯一要做的就是对照要调用的Activity的说明,按次序放入即可。

  本发明中每一个Saaf-Activity都默认生成一个外部参数类。该类为Activity的内部类,专门定义外部参数使用,该Activity的调用规范也是由此生成。

  参数解析工作由Saaf框架系统完成,页面启动成功后,从系统boundle中将序列化参数包取出,为了防止各种问题引起的丢失,对数据包的完整做有效性校验,校验成功则获取参数包对象,并对对象中每个参数做逻辑合理性二次校验,最后通过继承的param内部参数供Activity实例使用。

  例如,Activity在继承SAAF Activity后自动获得一个内部基类的参数param,当该Activity被调用时这个参数被系统自动解析及赋值,在Activity对象周期内直接使用即可。

  继承自原生系统,用户处理创建信息,如设置页面配置文件,定义业务空间等,处理所有控件的点击事件。如果使用了列表、地图等需要初始化数据的控件,再此对列表控件进行数据赋值。处理特殊控件的异步处理,比如异步加载列表图片,或者发送到服务器交互数据,接收后需//要异步刷新屏幕等,设置顶部和底部标题栏的样式配置文件,如果不设置,则顶部标题或者底部标题栏为空。根据常规app开发习惯,一般都有顶部和底部标题栏,Saaf已经内置,只需设置好样式即可,对应的按键响应处理在上述处理方法函数中统一处理即可。如果不设置,则顶部或底部栏不显示。

  首先将满屏划分成三个区域:顶部区域,中间主体区域,底部栏区域,同时如果Activity中设置了顶部和底部边栏,则进行初始化。

  然后定义顶部栏工具栏、底部工具栏、管理器、栏目操作等,进行添加、移除、替换,以及执行其他动作。用户顶部底部栏的初始化,如果有则设置,没有则无需设置。

  系统在这里会重启一个线程,根据用户设置的访问数据和地址,进行网络异步访问,访问返回后,则调用系统预设的回调函数,回调函数由用户在继承SAAFActivity后在Activity类中实现。

  缓存包括图片、文字等内容的缓存。需要说明的是,异步加载将需要加载的内容进行泛化处理,通过内存和物理存储进行二维加载,以提高效率和性能,异步加载主要用于图片和音乐。

  首先定义规则:例如,每个Activity类必须以”Activity”结尾。

  参数类为原Activity类名+标识flag”$”+字符串“Param”组成,系统将自动获取原类名并解析拼装字符串,并使用反射机制获取参数类类型定义。

  说明:在底层Saaf-Activity除了实现原生android基类外,还用Activity本体实现了点击、触摸、系统回调的通用接口,并对系统的所有控件进行遍历,将其常用回调设置为本体Activity,这样在程序员开发时,就无需关注和了解这些系统内部操作,只需要在自己的Activity页面定义需要哪些控件,然后直接在页面回调中直接书写逻辑即可。

  基于Saaf框架的list view的特点为使用简单,主要体现在以下方面:自动缓存、泛型数据加载、通用控件事件处理。当然,Saaf List View也是基于原生安卓的list view进行结构化的封装。

  控件在原有Android基础上,专门加入了缓存的list:cacheitemList,该缓存list在整个list view工作时同步工作,当滚动翻页是总是早行一步,用户下翻时自动触发下一页的数据加载,使用户下翻时几乎体会不到停滞感觉,提升用户体验。

  基于Saaf框架调用简单,只需传入上线文Activity,同时设置样式id;为了保证赋值准确,只需要将样式中需要赋值的对象id组合成模板数组即可,最后一个是数据列表,格式为按照上面的数据模板组织的一条条数据,数据不用设置类型,直接放入即可。

  1、系统会遍历当前list view条目模板中的各个控件,每个控件独有指定的id(android定义);

  4、对各种类型进行不同的处理,如Text View,Image View,Image Button等等,系统在这里统一进行处理后,对程序员来说,只需要传入数值即可,其他可以都不用管,交给系统即可;

  十四、对于通用控件事件,也可以基于SAAF统一框架实现程序开发,所有控件皆统一处理,此处不再冗述。

  本发明提供的应用程序开发方法及系统,通过创建Activity模型,将创建好的Activity模型放入IOAM容器进行管理;根据具体的开发需求,通过所述IOAM容器启动对应的Activity模型,并进行参数解析和调用。其将传统开发流程进行精简和筛选,去掉冗余和用不到的系统设置和操作,只留下必要的系统任务然后进行封装,将复杂的广义面向对象改为简单的过程化开发。利用本发明提供的应用程序开发方法及系统,可以建立高效管理容器提高系统效率,通过过程化开发模型降低开发难度,通过减少开发代码量降低开发错误发生率。

  以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步的详细说明,应当理解,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围。特别指出,对于本领域技术人员来说,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

  1.计算机视觉 2.无线.计算机仿线.网络安全;物联网安全 、大数据安全 2.安全态势感知、舆情分析和控制 3.区块链及应用

  一种Web页面数据生成方法、WEBITOX服务器、Web应用系统的制作方法

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。