Android 开发有什么好的架构么?
各位有推荐什么好的Android开发框架或者好的开源项目也行,不胜感激。修改
添加评论
• 邀请回答
28 个回答
android10/Android-CleanArchitecture · GitHub
说说用下来的优缺点,如有纰漏,还请指正。
无论从架构还是代码上看,分层都是三层:视图层(Presentation Layer)、控制层(Domain Layer)、数据流层(Data Layer)。
层级之间通过添加接口层作为分隔实现解耦。
简单来说,优点有以下
1.层次分明,各层级之间都不管对方如何实现,只关注结果;
2.在视图层(Presentation Layer)使用MVP架构,使原本臃肿的Activity(或Fragment)变得简单,其处理方法都交给了Presenter。
3.易于做测试,只要基于每个模块单独做好单元测试就能确保整体的稳定性。
4.易于快速迭代,基于代码的低耦合,只需在业务逻辑上增加接口,然后在相应的层级分别实现即可,丝毫不影响其他功能。
....等等
目前发现的缺点:
1.由于视图层(Presentation Layer)使用MVP模式,每个有独立逻辑的Activity(Fragment)都拥有独立的Presenter,当View多起来时候Presenter维护起来就显得略麻烦
2.上手难度比较大,学习曲线比较陡峭
推荐阅读
http://fernandocejas.com/
https://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html
收藏 • 没有帮助 •
• 作者保留权利
最近学到的倒是基于android特性进行开发,ui上可以从需求分析到android控件的选择比如fragment,slidingmenu,actionbar,navigation drawer等。
整体架构上,数据库层和ui刷新,数据异步读取,使用contentprovider(数据库操作像rest api一样的风格),cursorloader,网络请求的intentservice,resultreceiver,gson等。
设计思路上,分层--还是走的mvc嘛,虽然最近也有用mvp,不过不管怎么样关键还是要有分层的意识吧;解耦--面向接口编程啊,依赖倒置都是;抽象能力:其实我觉得抽象能力很重要的,不过自己现在抽象能力也很弱,没啥建议。
好的开源项目:我觉得倒是没什么统一框架,可以看看foursquare,google io app的源码都是相当好的,android源码永远是值得读的。
文中很多知识学自这逼@李彬,建议关注,不过这逼很装逼。
收藏 • 没有帮助 •
• 作者保留权利
App工程结构搭建:几种常见Android代码架构分析
Architecting Android…The clean way?
A useful stack on android #1, architecture · Saúl M.
......
自己写了篇博客: MVVM_Android-CleanArchitecture
收藏 • 没有帮助 •
• 作者保留权利
所以现在对这点看的挺淡的,尽量将代码写的漂亮些,但不过多苛求。也许敏捷的大流行也从一个侧面证明了移动开发不要过多的关注架构?
收藏 • 没有帮助 •
• 作者保留权利
我觉得,不需要再加新的框架了,增加团队学习成本了。
你的精力应该花在拆解业务,分成若干个library,如何集成如何分工上面。
收藏 • 没有帮助 •
• 作者保留权利
收藏 • 没有帮助 •
• 作者保留权利
Android项目重构之路:架构篇
Android项目重构之路:界面篇
Android项目重构之路:实现篇
收藏 • 没有帮助 •
• 作者保留权利
收藏 • 没有帮助 •
• 作者保留权利
收藏 • 没有帮助 •
• 作者保留权利
收藏 • 没有帮助 •
• 作者保留权利
写安卓代码就是在搭积木,一个工程关联七八个library工程是很常见的,难点在如何抽象这些可重用的工程,这也是架构层面需要关注的地方。
安卓开发需要研究的东西实在太多,架构层面个人感觉倒不是安卓上最应该花特别多时间去学习的方向。有时候架构设计能力的提升反倒是学习了另外一门语言瞬间的领悟~
收藏 • 没有帮助 •
• 作者保留权利
别人整理的几个android开源框架值得推荐的android开源框架
别人整理的一些Android项目Trinea/android-open-project · GitHub
收藏 • 没有帮助 •
• 作者保留权利
收藏 • 没有帮助 •
• 作者保留权利
1 业务逻辑和ui逻辑彻底隔离
2 api和activity跳转均实现配置化管理
3 logcat的配置管理
4 业务逻辑同时支持同步和异步调用,使得可以方便进行业务逻辑本身的拓展和ui调用之间的拓展
5 实现了一套依赖注入框架
6 实现了一套eventbus
7 自定义asyncTask
最近在逐渐开源。文档和单元测试在慢慢完善。话说单元测试正是个好东西。
收藏 • 没有帮助 •
• 作者保留权利
ThinkAndroid是一个免费的开源的、简易的、遵循Apache2开源协议发布的Android开发框架,其开发宗旨是简单、快速的进行Android应用程序的开发,包含Android mvc、简易sqlite orm、ioc模块、封装Android httpclitent的http模块,具有快速构建文件缓存功能,无需考虑缓存文件的格式,都可以非常轻松的实现缓存,它还基于文件缓存模块实现了图片缓存功能,在android中加载的图片的时候,对oom的问题,和对加载图片错位的问题都轻易解决。他还包括了一个手机开发中经常应用的实用工具类,如日志管理,配置文件管理,android下载器模块,网络切换检测等等工具。
目前Think
收藏 • 没有帮助 •
• 作者保留权利
开发中,我保持的原则是
尽可能简洁。
重重构而轻设计。
将类用作重构的手段而不是设计手段。
代码发展的走向是接口和模块设计良好,而不是无尽的继承。
有意识地让代码走向混乱,然后重构。
无可奈何才使用设计模式。
收藏 • 没有帮助 •
• 作者保留权利
我觉得这个和移动终端开发的特性有关系.
一,移动终端的性能目前来说依然远远不及桌面终端,而且是不可扩展的(当然,除非你换手机).而在成熟的EE框架中,大量的抽象,代理,托管,缓存等核心元素,都不可避免地占用资源.服务器可以通过升级配置,分布式来解决,但对于性能相对低下且不可扩展的移动终端来说,这些东西有时候就太奢侈了.
二,移动互联网项目,目前来说远比传统项目需要更为灵活快速的开发方式.现在很多项目都是抢时间,这周定一个需求下周就得上,这种时候对于开发人员来说,更愿意接受一个有基础功能的开发模板,通过快速的开发来达到需要的功能.这种时候,开发人员很倾向于把常用的,相对固定的业务逻辑固化入这个模板以节省时间.所以在我看到的一些所谓框架中,个人风格都比较浓.很可能一家公司视若珍宝完善了很久的框架,在另外一家公司就一文不值--因为基础的业务逻辑考虑的根本就不一样.
收藏 • 没有帮助 •
• 作者保留权利
网络连接框架:volley okhttpandroid-async-http
缓存框架:greenDAO
收藏 • 没有帮助 •
• 作者保留权利
收藏 • 没有帮助 •
• 作者保留权利
收藏 • 没有帮助 •
• 作者保留权利
收藏 • 没有帮助 •
• 作者保留权利
试试这个吧
收藏 • 没有帮助 •
• 作者保留权利
收藏 • 没有帮助 •
• 作者保留权利
收藏 • 没有帮助 •
• 作者保留权利
收藏 • 没有帮助 •
• 作者保留权利
收藏 • 没有帮助 •
• 作者保留权利
收藏 • 没有帮助 •
• 作者保留权利
Android 开发有什么好的架构么?相关推荐
- Android开发精要1--Android系统架构
1.1 Android系统架构概况 下图是Android系统架构图,从图中可以看出,划分为三个部分: 1>应用部分 :包含在Android设备上运行的所有应用,它们是Android系统中直接面向 ...
- Android开发最佳学习路线图
原文地址为: Android开发最佳学习路线图 为了帮助大家更好的学习Android开发的相关知识,尚观4G智能操作系统研究室(www.up4g.com)为大家制作以下学习路线图:希望能帮 ...
- Android程序员现状:没有架构师的命,却得了架构师的病!
Android开发的现状貌似已经是一个老生常谈的问题了.但今天不想写Android开发的现状,什么Android前景如何.Android凉凉之类被别人写烂了的话题. 今天我们来聊聊我们自己,我们And ...
- 安卓开发陀螺仪!首发10万字Android开发实战文档,进阶学习资料!
Gradle是什么? Gradle是一种构建语言,目前是Android的默认构建工具,我们编写的编译脚本,其实就是玩Gradle的API,所以从它更底层的意义上看,是一个编程框架. 因为涉及的内容很多 ...
- Android逆向 学习Android安全和逆向开发的路线总结,android开发平台的发展
学习Android逆向之前,必备条件.[必备,出去面试正经公司的安全岗位都会问的基础问题] 从事3-5年真实的Android开发工作,熟练使用C/C++,Java,kotlin,dart等Androi ...
- Android开发知识体系!Android面试吃透这一篇就没有拿不到的offer!挥泪整理面经
1.项目介绍 Flutter是目前比较流行的跨平台开发技术,凭借其出色的性能获得很多前端技术爱好者的关注,比如阿里闲鱼,美团,腾讯等大公司都有投入相关案例生产使用. 基于Flutter+Dart+ch ...
- Android开发究竟该如何学习,附架构师必备技术详解
前言 笔者是某211非计算机相关专业2018届本科生,在校期间有半年多的互联网小公司实习经历. 毕业之后投递360 ,入职了360企业安全成为专门的前端开发工程师,有幸进入一个很赞的团队,遇到很棒的导 ...
- 云炬Android开发笔记 3-1项目架构初始化
一.项目架构初始化 1.我们的应用只有一个activity,它里面是多个fragment进行切换的,这样的好处是应用会非常顺滑,并且一个activity也可以进行很多全局的处理. 在类前加上final ...
- Android开发架构规范
前言 在开发中,一个良好的开发习惯以及一个开发规范可能会让你少走很多弯路,也会一定程度上的提高代码的可读性,可维护性和可拓展性.当随着需求的不断变更,需要维护项目的时候.当随着项目的代码量的提升,需要 ...
最新文章
- SAP中记账码的作用
- java hadoop2.6.0 读取文件报错_java 程序访问hdfs错误 hadoop2.2.0
- 高可用架构设计之道,实战案例直面流量洪峰
- 记录工作中遇到的问题
- android布局中使用include及需注意点
- C# 定义了 7 种变量类别:静态变量、实例变量、数组元素、值参数、引用参数、输出参数和局部变量
- Python回文判断代码优化与6个思考题
- SpringBoot整合Dubbo案例
- 数据结构算法基础定义
- PTAM在Linux下编译运行
- qq、微信能打开,网页打不开的解决办法。
- 面试官;经典面试题-JVM篇
- 美国大通胀:谁来扛旗?
- CDH安装Tez 0.8.5
- 前端安全攻防大全--专注于攻击和防御
- 只会用ping测试网络通不通?高级网工还会这么用
- php随机生成汉字、随机字符串
- 《位置大数据隐私管理》—— 1.4 隐私泄露威胁
- CAP与ACID原则
- 国内外知名的IT社区
热门文章
- 【错误记录】VMware 虚拟机报错 ( Ubuntu-Unattended upgrade in progress during shutdown, please don‘t turn off )
- 【C 语言】动态库封装与设计 ( Windows 动态库简介 | Visual Studio 调用动态库 )
- 【BLE MIDI】MIDI 文件格式分析总结 ★★★
- 【设计模式】软件设计七大原则 ( 合成复用原则 | 代码示例 )
- 【Android 插件化】“ 插桩式 “ 插件化框架 ( 原理与实现思路 )
- 【MATLAB】进阶绘图 ( colormap 颜色图矩阵分析 | 自定义 colormap 颜色图 | 生成 64 x 3 的 colormap 颜色图矩阵 )
- 【Flutter】StatefulWidget 组件 ( 创建 StatefulWidget 组件 | MaterialApp 组件 | Scaffold 组件 )
- 【组合数学】组合恒等式 ( 变上项求和 1 组合恒等式 | 三种组合恒等式证明方法总结 | 证明变上项求和 1 组合恒等式 )
- 【Android FFMPEG 开发】FFMPEG ANativeWindow 原生绘制 ( Java 层获取 Surface | 传递画布到本地 | 创建 ANativeWindow )
- js的事件循环机制:同步与异步任务(setTimeout,setInterval)宏任务,微任务(Promise,process.nextTick)...