首页 > 编程知识 正文

android进阶指北,Android开发指南

时间:2023-05-06 14:41:11 阅读:214344 作者:3869

目录 核心分析内容1、学什么1.1、Android基础 & 常用1.2、Android进阶1.3、与时俱进、热门技术1.4、编程语言:Java与Java虚拟机1.5、计算机基础1.6、总结 2、怎么学2.1、学习路径:如何循序渐进、阶段性的学习Android的理论知识?2.2、获取途径:有哪些高效的方式获取Android理论知识?2.3、学习方式:用什么方式记录?2.4、总结 3、怎么应用Android知识?3.1、该如何寻找项目?3.2、如何将理论知识运用到项目中 & 提高项目的质量 具体执行建议总结

核心分析内容

对于怎么学习Android,主要解决的是3个问题:学什么怎么学 & 怎么用

具体如下:

下面,我将带着上述几个问题,详细讲解自身学习Android的方法和Android学习路径。最后,还会结合前面内容,给出综合的具体执行学习Android的建议。

1、学什么

面向Android初、中级开发者,对于要学习的Android理论知识,我认为主要包括:

Android基础 & 常用Android进阶与时俱进、热门技术编程语言计算机基础

具体介绍如下:

1.1、Android基础 & 常用

针对Android基础&常用知识,按照优先级最主要的知识点主要包括:四大组件布局使用多线程 & 动画

具体介绍如下:

类型简介具体内容四大组件Android最基础、最常用的四个组件• 活动(Activity)
• 广播(Broadcast)
• 内容提供者(ContentProvider)
• 服务(Service)布局使用常用UI布局组件• 框架布局(FrameLayout)
• 线性布局(LinearLayout)
• 绝对布局(AbsoluteLayout)
• 相对布局(RelativeLayout)
• 表格布局(TableLayout)
• 约束布局(ConstraintLayout)多线程多线程操作、异步通信• Thread、Runnable
• Handler
• AsyncTask
• IntentService
• HandlerThread动画实现UI中的动画效果• 补间动画
• 属性动画
• 帧动画
• 差值器 & 估值器1.2、Android进阶

针对Android进阶知识,按照优先级最主要的知识点主要包括:自定义View性能优化

具体介绍如下:

类型简介具体内容自定义View自定义试图组件 & 动画• 自定义View流程(measure、layout、draw)
• 时间分发机制
• 自定义动画 & 组件性能优化性能优化的目的是为了让应用程序App更快、更稳定 & 更省电• 内存优化
• 内存泄漏
• 绘制优化
• 布局优化1.3、与时俱进、热门技术

除了基础日常使用的Android知识,我们还需时刻关注行业动态,与时俱进的学习新技术,如近些年来较为热门的Android新兴技术包括:Flutter热修复插件化 等;

同时,了解 & 学习常用的开源库也十分重要,常用的开源库主要包括 图片加载网络请求异步处理 的开源库。

具体类型如下:

类型简介具体内容图片加载加载显示图片• glide
• fresco
• picasso
• Android-Universal-Image-Loader网络请求与服务器快速实现网络请求• Retrofit
• okhttp
• volley异步处理快速实现异步通信、响应式编程• RxJava
• RxAndroid
• RxBinding
• EventBus1.4、编程语言:Java与Java虚拟机

Android是基于Java的,所以学习Java和Java虚拟机(JVM)十分重要。

学习Java不需要类似后端那么深入,我认为作为Android开发者,学习的内容包括:语言特性基础使用集合类机制

具体介绍如下:

类型简介具体内容语言特性Java特有的语法特性• 面向对象的3个特征与含义
• 多态的实现原理
• 基本数据类型、相关操作和封装类
• 4种引用:强、软、弱、虚 & 应用场景基础使用Java常见的使用类/方法• 基本数据类型、相关操作和封装类
• Object类、String类、抽象类(Abstract)
• Static关键字
• 接口(Interface)集合类Java中与集合相关的类 & 使用• Collection类、Arrays类
• List、Set、Queue、Stack、Map的特点与用法
• Vector、ArrayList、LinkedList的存储特性 & 区别
• Map相关:HashMap、LinkedHashMap、TreeMap、HashTable、ConcurrentHashMap机制Java特定机制的使用• 多线程:Thread与Runnable、ThreadLocal、线程池ThreadPool
• 线程同步:sychronized、同步锁(sychronized)
• 反射
• JNI
• IO与NIO
• 泛型

对于Java虚拟机(JVM),属于底层 & 原理性的内容,具体介绍 & 学习的内容包括:

1.5、计算机基础

除了学习Android特定技术外,对于程序员来说,最基本的计算机基础素养也十分重要的,主要包括 数据结构算法计算机网络

具体介绍如下:

类型简介具体内容数据结构相互之间存在一种或多种关系的数据元素的集合• 线性表&特殊线性表(栈和队列)
• 树、二叉树
• 串、字符串
• 图
• 查找
• 排序算法解决特定问题的求解步骤对应每种数据结构的多种常见算法计算机网络网络通信相关• 计算机网络体系结构(5层 & 7层)
• TCP / IP协议、UDP协议
• HTTP协议
• Socket1.6、总结

至此,关于入门Andriod需学习的内容讲解完毕,总结如下:

2、怎么学

对于怎么学习Android知识,此处分为3个子问题:

学习路径:如何循序渐进、阶段性的学习Android的理论知识?获取途径:有哪些高效的方式获取Android理论知识?学习方式:用什么方式记录?怎么样去记录?

下面将具体介绍:

2.1、学习路径:如何循序渐进、阶段性的学习Android的理论知识? 既然已经知道要学习哪些内容了,下面,该解决的是:学习路径,即什么阶段该学习什么内容。对于Android知识学习阶段,我认为是和Android开发水平相结合的,只要掌握了哪部分知识,就代表你处于Android开发的哪个阶段。我将Android开发水平分为:初、中、高 & 高级以上

具体对应的知识内容如下:

类型定义知识 & 能力范畴特点具体内容初级最基础的Android知识• 定性认识:知识的了解
• 定量使用:知识的实际使用• 基础
• 广度• Android基础使用(如四大组件)
• Android常见机制(如多线程、动画等)
• Java
• 编程通用:数据结构、算法、网络中级基础学习中更深一步的探索• 高级应用
• 源码分析
• 新技术的使用• 深度
• 与时俱进• 底层工作机制的原理
• 自定义View
• 性能优化
• 热定技术:开源库、热修复、插件化高级专注于某一垂直领域(如音视频、性能优化)特定领域的知识深入• 某一垂直领域
• 机具深度 & 门槛专注解决特定领域的技术问题高级以上技术专家继续深入研究特定领域更加深入某一垂直领域• 专注解决特定领域的技术问题
• 会产出 & 开源库 & 组件高级以上架构师在更高的层面解决项目难点 / 业务问题专注于整体技术架构• 技术架构设计
• 具体业务的解决方案高级以上管理层面向团队、业务 & 产品具备管理团队、统筹产品方向的属性• 管理能力
• 业务能力
• 产品能力2.2、获取途径:有哪些高效的方式获取Android理论知识?

既然已经知道要学习哪些内容了,下面,我将列举一些学习这些理论知识的有效途径。

对于获取Android知识,我认为最有效的途径是:书籍 > 视频 > 技术博客 > 公众号

具体介绍如下:

类型特点应用场景推荐书籍具备完整知识体系、讲解全面的获取知识途径成知识体系、循序渐进的学习• Android:《第二行代码》、《Android开发艺术探索》
• Java:《Java编程思想》
• JVM:《深入理解Java虚拟机》
• 数据结构:《大话数据结构》
• 算法:《剑指Offer》、Leetcode网站刷题
• 计算机网络:《计算机网络》(第五版)视频• 更加生动、清晰的讲解知识 & 实践
• 较大的缺点:耗费时间较长学习难度较高的知识在线学习网站对应的Android学习课程(极客学院 & 慕课网)技术博客针对某个知识点进行讲解目的性搜索、深入学习• 技术社区:CSDN、稀土掘金、简书公众号针对某个知识点进行讲解(由于镶嵌在微信,所以容易链接到外部更多的渠道)适合碎片化学习Android公众号

关于通过公众号的学习,本人的微信公众号:carson带你解析Android,希望能让大家系统的学习上述说的Android理论知识。

2.3、学习方式:用什么方式记录?

很多人看完书籍看完博客后当时很理解,但过一段时间就十分容易忘记。

所谓“好记性不如烂笔头”,我认为,最好的记录方式就是将学习到的知识记录下来,我强烈推荐:撰写技术博客。

对于技术博客的介绍如下:

撰写技术博客好处多多,主要包括:

好处具体描述提高开发效率• 复杂使用的流程化:记录下繁杂的使用流程,下次再次使用时按部就班直接复用即可,常见的有:开源库的使用、某类需求的具体实现过程
• Bug的快速解决:记录下问题发生的场景 & 解决方案,不仅能避免重复采坑,就算采坑了也能快速解决保证真正的掌握知识• 只有做到以下3步我才认为是真正掌握了知识:敲代码实现、清晰表达 & 让别人听懂
• 但大部分开发者都停留在第一步(敲代码实现),你得清楚明白:敲代码实现 & 用语言表达出来是两码事
• 所以在整个过程中是非常能锻炼自己的思维能力 & 表达能力加深对知识的思考• 在写作过程中,你会不断思考知识的各个方面
为什么?因为如果思考的广度 & 深度不够,文章是没法继续写下去的
• 这大概也是很多人没法坚持下来的原因:因为牵一发而动全身,知识总是从1个点扩散到整个面的,最终需完成的文章内容远远超出你的想象保证知识的正确性• 自己的认知能力有限,所以对知识的理解总有偏差
• 当分享出来博客后,良好的Android技术社区氛围能及时纠正你错误的理解,保证你的认知是正确的

当然,还有一些其他福利,如:

好处具体描述提供影响力当大量产出优质文章后,在Android领域的知名度 & 影响力就会提高、对自己在职场上的地位会有所帮助,这是一种莫大的荣誉感结识人脉相对其他职业来说,程序猿较为封闭,即对电脑多、面向人较少;通过博客、Github等这些公开渠道,能结识更多的开发者知识共享Android与IOS其中一个较大区别 = 开源,作为一名Android开发者,应秉着谷歌、Android开源的精神,将有用的知识分享给大家、帮助更多的Android开发者 & 共同学习,推进整个Android技术圈的进步2.4、总结

3、怎么应用Android知识? 理论结合实践、学以致用才能更好地获取知识,对于深入理解Android,最好的实践就是 将理论知识运用到Android项目中所以,此处可以转化成两个问题: 该如何寻找项目?如何将理论知识运用到项目中 & 提高项目的质量

下面我将详细回答这两个问题

3.1、该如何寻找项目?

此处我给出3个方向:

学校:课程设计、社团组织公司:实习、正职、创业技术社区:开源项目 方向具体学校• 课程设计:请认真对待大学专业对于你职业相关课程的大作业(如Java、Android、数据结构),因为它可能会成为你一个不可多得的项目经验
• 社团组织:多参与校内官方组织 & 社团组织,注重寻找具备校内影响力较大的产品的所属组织,因为在那里你能找到一个具备落地实践的开发经历 & 一群靠谱、能在职场上给予你很多帮助的开发团队公司• 实习:如果你还是在校大学生,请安排好自己的大学上课时间,尝试出去公司参与拥有大量用户、真正的项目,特别是知名公司,对于在校大学生来说,这部分项目经历是含金量的提高。
• 正职:如果你已经是正职员工,那么做好手头上的项目是你实践最好的方式。
• 创业:这是能最大程度锻炼你全方面的能力,含:技术专业能力 & 基础能力;但这是一个可遇不可求的机会:找到靠谱的团队 & 有前景的方向,若有这样的机会,个人非常建议去尝试;假设最后能拿到投资,含金量是非常非常高、最能锻炼人的。技术社区• 来源:自己的项目、当前技术热点/开源库、仿照主流的app;
• 内容:完整App、某个功能模块、UI组件等;
• 开源处:主流技术社区 = Github、CSDN、稀土掘金、简书3.2、如何将理论知识运用到项目中 & 提高项目的质量

我认为,**项目中的所有功能 & 业务实现都是基于上述说的Android知识的,关键是在于:**是否能选择对的知识点 & 组合实现思路。

提高项目质量,即提高项目含金量、增加技术含量 & 亮点,下面主要是从项目**本身的意义实现方式性能优化** & 影响力 4个方面

类型具体备注意义尽可能的让自己的项目使用的技术往学习到的知识点靠拢实现方式• 具备一定的技术难点 & 技术技巧,而不是简单实现
• 如:使用了某种新技术、新的开源库若无难点,要学会自己去制造难点性能优化对项目在性能上提出要求 & 提出解决方案与同类项目、一般要求的区别开来影响力尽可能让项目可落地 & 具备一定的用户基数;
• 具备一定的影响力 & 知名度具体执行建议

个人认为最高效的执行方式是:以做项目为主知识体系学习为辅将技术博客作为一种学习的方式

具体理解的是:

总结

至此,关于我对Android学习内容、方向 & 具体实践方式 讲解到这里,此处作个简单总结:

凭借这样的学习方式,有幸获得腾讯、阿里巴巴、今日头条等Android客户端offer,所以,我将自己的一套Android学习方式总结出来分享给大家,希望各位也能获得心仪的offer!

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