首页 > 编程知识 正文

android开发实训心得,android项目开发总结报告

时间:2023-05-06 20:58:48 阅读:63144 作者:1632

前言安卓高级架构师应该学习什么知识?

作为资深开发者,请访问需要掌握的技能点

组件化1.1组件化原本的APP版本不断重复,增加了新功能,业务也越来越复杂,维护成本高。 业务结合度高,代码庞大,团队中多人难以协同开发。 Android项目在编译代码时计算机非常堵塞。 另外,由于单一工序的代码结合很激烈,所以每次修改代码时都必须重新编译软件包测试,很花时间。 容易进行单元测试,更改一个业务模块,不需要将重点放在其他模块受到影响上。 1.2组件化是指将一个app分成多个模块。 如下图所示,每个模块都是一个组件。 在开发过程中,可以单独调试部分组件。 组件之间不需要相互依赖,但可以相互调用。 最终发布时,所有组件都以lib的形式依赖于主app工程,并打包到一个apk中。

1.3组件化的优势组件化是指通过独立和统一管理通用模块,提高复用性,将页面划分为粒度更小的组件。 组件内部除了UI实现外,还包括数据层和逻辑层。 每个项目都可以独立编译,提高编译速度,并独立打包。 各工程内部的修改,不影响其他工程。 业务库工程可以快速拆分,并集成到其他App中。 迭代较多的业务模块采用组件方式,业务线研发互不干扰,可以提高合作效率,控制产品质量,提高稳定性。 并行开发,团队成员只关注自己开发的小模块,降低耦合性,便于后期维护等。 2组件化通信2.1组件化通信组件化彼此不直接依赖,如果组件a想要调用组件b的方法,则不可能。 许多开发人员由于组件化之间的通信复杂而放弃了使用组件化

组件通信有以下方法:

# # # #

本地广播,即LoacalBroadcastRecevier。 经常在同一APP应用内的不同系统中规定的组件上通信,这具有以下优点:所发射的广播仅在自己的APP中传播,不泄露到其它APP,其它APP不能向其APP发送广播,不干扰其它APP。 本地广播与交互通信相比,成本低、效率高,但缺点是两者的通信机制都是委托给系统的,我们不能干预传输过程中的任何步骤,不能控制,一般用于组件化通信的比例不高。

2 .进程之间的AIDL进程之间的AIDL。 这个粒度是一个过程,但是我们的组件化通信过程往往在线程中,AIDL通信也是系统级通信,基础是Binder机制。 虽然Android为我们提供了实现的模板,但用户往往难以理解,交互复杂,也不适用于组件化通信过程。

3 .匿名内存共享匿名内存共享。 例如,在Sharedpreferences中,线程在多线程场景中通常不安全,并且经常存储较少变化的信息,如组件中的配置信息

4.Intent Bundle传输Intent Bundle传输。 包括显性和隐性传播在内,显性传播需要明确包名路径,组件和组件需要相互依赖。 这背离了组件化中的SOP (关注点分离原则),隐性化不仅意味着数据包名称的路径不能重复,还需要定义规则集。 只有一个数据包名称路径错误,故障排除也有点麻烦。 这种方式往往适合组件之间的内部传递,很少用于组件之外与其他组件的交互。

2.2目前主流的做法之一是引进第三方。 例如,图中的基本模块。

3 ARouter组件通信框架3.1 ARouter的概述表明,ARouter是一个为阿里巴巴开源安卓平台中的页面和服务提供路由功能的中间件,简单而充分主要用作组件化的通信

intent intent=new intent (m context,XxxActivity.class; intent.putextra('key ',' value ' ); 开始活动(intent; intent intent=new intent (m context,XxxActivity.class; intent.putextra('key ',' value ' ); startactivityforresult(intent,666 ); 上面的代码显示,Android开发中最常用的功能是页面跳转。 我们经常需要面对将页面从浏览器或其他APP跳转到自己的APP的需求,但即使是简单的页面跳转,也会随着时间的推移遇到一些问题:

集中URL管理:集中管理总是让你蛋疼。 如果多人共同开发,大家可以在AndroidManifest.xml中定义不同的Intent过滤器,然后使用隐式Intent最终在AndroidManifest.xml中添加不同的方案、不同的Pame

配置性差:管理受限于xml格式,书写麻烦,配置复杂,可定制的也很少

跳的时候不能动手:直接在Intent上跳。 跳跃中开发者不能介入。 面向切面很难实施。 例如,登录、点填充等非常共同的逻辑,在各子页面上判断是不合理的。 activity本来就是实例化的

交叉模块不能明确依赖。 在APP小而有规模的时候,我们向美联社

p做水平拆分,按照业务拆分成多个子模块,之间完全解耦,通过打包流程控制App功能,这样方便应对大团队多人协作,互相逻辑不干扰,这时候只能依赖隐式Intent跳转,书写麻烦,成功与否难以控制。

为了解决以上问题,我们需要一款能够解耦、简单、功能多、定制性较强、支持拦截逻辑的路由组件:我们选择了Alibaba的ARouter,偷个懒,直接贴ARouter的中文介绍文档:

3.2 ARouter 优势

从 ARouter Github 了解到它的优势:

支持直接解析标准URL进行跳转,并自动注入参数到目标页面中 支持多模块工程使用 支持添加多个拦截器,自定义拦截顺序 支持依赖注入,可单独作为依赖注入框架使用 支持InstantRun 支持MultiDex(Google方案) 映射关系按组分类、多级管理,按需初始化 支持用户指定全局降级与局部降级策略 页面、拦截器、服务等组件均自动注册到框架 支持多种方式配置转场动画 支持获取Fragment 完全支持Kotlin以及混编 典型的应用:

从外部URL映射到内部页面,以及参数传递与解析 跨模块页面跳转,模块间解耦 拦截跳转过程,处理登陆、埋点等逻辑

跨模块API调用,通过控制反转来做组件解耦

三、典型应用场景 从外部URL映射到内部页面,以及参数传递与解析跨模块页面跳转,模块间解耦拦截跳转过程,处理登陆、埋点等逻辑跨模块API调用,模块间解耦(注册ARouter服务的形式,通过接口互相调用) 最后

文章不易,如果大家喜欢这篇文章,或者对你有帮助希望大家多多点赞转发关注哦。文章会持续更新的。绝对干货!!!

由于文章篇幅问题复制链接查看详细文章以及获取学习笔记链接:GitHub

Android进阶学习全套手册
关于实战,我想每一个做开发的都有话要说,对于儒雅的微笑而言,缺乏实战经验是通病,那么除了在实际工作过程当中,我们如何去更了解实战方面的内容呢?实际上,我们很有必要去看一些实战相关的电子书。目前,我手头上整理到的电子书还算比较全面,HTTP、自定义view、c++、MVP、Android源码设计模式、Android开发艺术探索、Java并发编程的艺术、Android基于Glide的二次封装、Android内存优化——常见内存泄露及优化方案、.Java编程思想 (第4版)等高级技术都囊括其中。

Android高级架构师进阶知识体系图
关于视频这块,我也是自己搜集了一些,都按照Android学习路线做了一个分类。按照Android学习路线一共有八个模块,其中视频都有对应,就是为了帮助大家系统的学习。接下来看一下导图和对应系统视频吧!!!

Android对标阿里P7学习视频

BATJ大厂Android高频面试题
这个题库内容是比较多的,除了一些流行的热门技术面试题,如Kotlin,数据库,Java虚拟机面试题,数组,Framework ,混合跨平台开发,等
J8-1614946148259)]

BATJ大厂Android高频面试题
这个题库内容是比较多的,除了一些流行的热门技术面试题,如Kotlin,数据库,Java虚拟机面试题,数组,Framework ,混合跨平台开发,等

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。