Advertisement

android app开发架构,Android之App整体架构介绍

阅读量:
3fc229587ef9

image.png

App整体架构起源

对程序进行架构设计的原因,归根到底是为了提高生产力。

通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合。这

通过这种方式,在程序开发过程中无需分散注意力于多个环节从而显著提升了整体效率水平这不仅有助于简化后续测试流程并且有助于迅速定位并解决问题

基于MVP的架构设计思路

The full name of MVP is Model-View-Presenter. The Model supplies data, while the View is responsible for displaying information. Controller/Presenters are in charge of handling logic.

在App开发过程中常见问题即某个模块的规模较大即便采取了模块划分与接口隔离但依然难以完全规避

从实践中看到,这更多的出现在UI部分,也就是Activity里。

3fc229587ef9

image.png

MVP是一种使用广泛的基础架构模式,使用基于事件驱动的应用框架。

MVP从更早的MVC框架演变过来的一种框架,与MVC有一定的相似性。

MVP框架包含三个主要组成部分:其中View用于显示界面信息;Presenter负责处理业务逻辑;Model存储和管理数据。

在 MVP 框架设计中, 视图(View)与模型(Model)之间不会进行直接的数据交互, 相关操作将由 presenter 进行处理;而在 MVC 模式下, 视图与模型之间会建立直接的数据关联

在框架体系中担任核心管理角色的是 MVP 的功能呈现者。它负责整合并执行大量业务相关的逻辑处理;相比之下,在 MVCS 模型下运行的主要职责通常是数据转发。基于此,在 App 开发中引入 MVP 模型的主要目的,则是为了将原有 Activity 中包含的各种复杂业务逻辑转移到控制层进行集中管理;这样一来不仅能够有效避免 Activity 对象因过重负担而影响性能;还能使得应用层次更加分明、架构更加清晰有序

MVP的各种变体繁多,在实际应用中应用最广泛的当属被动视图模式(即被动视图)。在这一模式下(此处可补充说明),框架内部各模块之间的逻辑操作完全由 presenter 执行, 而 view 仅作为整个操作的结果展示者和接收方, model 根据 presenter 的单向调用返回相应的数据(图片来自网络)。而且 MVP 模式显著降低了 view 与 model 之间的耦合程度, 减少了 presenter 对 view 的依赖程度, 这一设计初衷正是为了实现关注点分离原则, 因此使得开发人员能够更加便捷地进行代码编写与测试流程设置。

UI层涉及一组核心组件如Activity, Fragment, Adapter等与用户界面直接相关的类。当UI组件启动时会创建相应的 presenter 实例实现人机交互功能并转移应用对屏幕的控制权将其交由 presenter 管理两者的数据传输可通过广播机制事件处理器或接口实现仅传输事件与结果相关信息以确保系统高效运行。

举个简单的例子,在UI界面向逻辑层发送消息时(Presenter),用户在界面上点击了按钮(Button)。随后(Presenter)根据需求选择相应的处理行为(Behaviors),并选择合适的模型(Model)去执行这个任务(Task)。系统将处理结果反馈回界面(UI)。

3fc229587ef9

image.png

ThinkAndroid Android 快速开发框架

ThinkAndroid is a free, open-source, user-friendly Android framework developed under the Apache 2.0 License. Its primary aim is to streamline and expedite Android app development. It incorporates features such as the Android MVC framework, a simplified SQLite ORM, dependency injection modules, and an encapsulated HTTP client for the Android platform. Additionally, it leverages its file caching module to optimize image loading on Android devices. The framework addresses common issues like OOM errors and misaligned images effectively.

他还包括了一个手机开发过程中常用的实用工具集合,并列举了其中的主要功能:日志管理功能、配置文件管理模块、Android下载辅助模块以及网络切换状态检测功能等工具。

目前ThinkAndroid主要有以下模块:

模块

描述

MVC模块

实现视图与模型的分离。

ioc模块

android中的IOC模块采用详细注释方式即可实现UI绑定功能,并支持res文件中资源的读取以及同时支持对象初始化操作

数据库模块

android中的orm框架,使用了线程池对sqlite进行操作。

http模块

通过httpclient进行封装http数据请求,支持异步及同步方式加载。

缓存模块

通过简单的配置及设计可以很好的实现缓存,对缓存可以随意的配置

图片缓存模块

当imageView在加载图片时,无需处理发生时可能发生的OOM异常以及移动导致的QuickContainer快速滑动中出现的图像偏移等问题。

配置器模块

当前的配置文件能够支持Preference和Properties用于配置获取。

日志打印模块

能够快速且轻松地实现日志打印功能,并且支持对其扩展。当前版本已能对SD卡执行本地打印操作以及在控制台界面完成打印任务。

下载器模块

该系统支持多种功能模块的集成配置包括多线程运行后台处理以及断点续传等功能同时能够对下载操作进行全过程的智能管理包括启动暂停以及删除操作等

网络状态检测模块

当网络状态改变时,对网络状态进行检测。

afinal Android的快速开发框架

Afinal 是一个android的sqlite orm 和 ioc 框架。

同时封装了android中的http框架,使其更加简单易用;

使用final Bitmap,并不需要担心在Android应用中加载Bitmap时出现内存溢出(OOM)问题以及由于快速滑动导致的图片显示位置偏移的问题

Afinal的核心理念是精简且高效的开发工具。在设置上优先级高于配置选项的方式可选性更高。通过一行代码实现多任务处理功能

目前Afinal主要有四大模块:

模块

描述

FinalDB模块

android中的orm框架,在编写代码时只需一行即可完成增删查改操作。该框架支持一对一以及一对多的数据关系模式。

FinalActivity模块

在Android中使用IOC框架时,采用全属性注解的方式即可实现UI绑定与事件绑定功能。不需要使用bind和setClickListener等方法。

FinalHttp模块

通过httpclient进行封装http数据请求,支持ajax方式加载。

FinalBitmap模块

借助FinalBitmap技术,在imageview加载bitmap时无需处理OOM异常以及安卓系统快速页面刷新导致的画面偏移问题。该技术提供灵活配置多种参数设置包括但不限于线程数量、缓存容量、缓存存储位置以及动态展示效果。采用LRU缓存策略进行内存管理,并完全摒弃传统意义上的软引用(自 android 2.3版本起已不推荐采用弱引用),而是直接采用硬引用机制确保数据持久性。提供灵活定制功能允许开发者扩展更多网络传输协议如FTP之类的支持。同时支持自定义展示效果可依据需求选择不同的插件类型并切换动态展示模式

xUtils Android开源框架

xUtils是以Afinal为开发基础、当前功能较为完善的Android开源框架。

xUtils目前主要包括4大模块:DbUtils, ViewUtils, HttpUtils, BitmapUtils。

集成了大量实用的Android工具;具备大文件上传能力,并针对Http事务提供更为全面的支持;采用更加灵活的ORM技术,并提供了更多稳定的事件注解功能,并避免了命名空间冲突问题;最低要求兼容Android 2.2(API版本号:8)。

全部评论 (0)

还没有任何评论哟~