封装继承多态

2 . 程序设计的6大原则:

  • 单一职责原则

  • 里氏替换原则

  • 依赖倒置原则

  • 接口隔离原则

  • 迪米特法则

  • 开闭原则

了解这6大设计原则是非常有必要的,它能指导你的程序整个结构的设计和规范。要想提高你的代码质量,请熟记这几个原则。在我们设计类、方法、接口的时候,请遵循这些原则。

3 . 设计模式

  • 单例模式 :double check 双重加锁方式、静态内部类方式、枚举方式。

  • 构造器模式

  • 模板方法模式

  • 装饰器模式

  • 观察者模式

  • 责任链模式

  • 策略模式

23种设计模式就不一一列举了,不管你是工作了5年还是工作了1年,学习一下设计模式吧,这有助于打开你的编程思维。

4 . Java 字符串相关

Java 字符串相关的三个类:StringStringBuilderStringBuffer ,你知道他们的区别吗?这也是面试中比较常问的,如果你还不知道?那就去查查资料吧。

5 . Java 线程池

线程池方面,JDK 为我们内置了几种线程池:

  • **newFixedThreadPool:**newFixedThreadPool,创建固定大小的线程池,poolCoreSize和maxPoolSize 相等,到达coreSize,则将新的任务放到缓存队列,有线程执行完毕,直接去取。

  • **newSingleThreadExecutor:**newSingleThreadExecutor,创建一个单线程的线程池,核心池的大小和最大池大小都为1.

  • **newCacheThreadPool:**newCacheThreadPool,无大小限制的线程池,提交一个任务就创建一个线程执行。

如果默认的几种线程池还不能满足你的需求,那就试一试自定义线程池吧!自定义线程池继承ThreadPoolExecutor

6 . Java 集合

集合是Java中用得最多的了吧,你也面试的必问题之一,对于Java集合,你的脑袋里要熟记它的整个框架图:

Collection

(1) List:

  • LinkedList

  • ArrayList

  • Vector

(2) Set

  • HashSet

  • TreeSet

Map:

  • HashMap

  • TreeMap

  • HashTable

我们需要知道每个容器的特性,以及它们的扩容方式(这个很重要)。根据我们的数据大小、特定场景、业务逻辑来选择合适的容器。

7 . Java 内存模型

Java 内存模型这一块非常重要,因为它涉及到我们程序的性能,我们需要知道,内存是如何分配的,成员变量、静态变量、局部变量、对象等各自分配到哪一个区:

  • 栈内存

  • 堆内存

垃圾回收机制:

涉及到内存,我们就需要知道java的垃圾回收机制,虽然Java 不像c++一样需要我们自己分配内存、释放内存。但是我们还是需要知道它的回收机制,分代回收:

  • 年轻代:1 Eden 区 和2个Survivor 区

  • 年老代

  • 永久代

分代回收分为了三个代,每个代的垃圾回收时机和频率是不一样的,因此才用的回收算法也不一样。

总的来说:年轻代的回收频率很高,对象的生命周期比较短暂,当经过一定次数的回收周期之后,年轻代的对象还存活的话,就会被移动到年老代,年老代的回收比较耗时,回收频率较低,回收成本较大。

Java 基础总结:关于Java基础暂时就总结了这些,这些都是Android 开发中比较常用或者常常需要关心的一些东西。如果你想比较系统的学习Java基础相关的东西,推荐你去看一下经典书籍《Thinking in Java》。

二、Android 基础

就像建造房屋一样,要建造一座宏伟的建筑,首先得打牢根基。同样的,作为Android 开发者,要想走的更远,也要学好Android基础。

1 . Android 四大组件

Android四大组件是Android的根本,从我们学习Android 时候,就先认识了它们:

  • Activity

  • Service

  • BroadcastReceiver

  • ContentProvider

Activity:

Activity 再熟悉不过了吧,我们APP 所能看到的活动界面就是一个个Activity,说到Activity,我们得知道:

  • 1,Activity 的生命周期

image

  • 2,Activity 的几种启动方式:

standard

SingleTask

SingleTop

SingleInstance

请记住这几种启动方式的区别。

  • 3,Activity 间传如何递数据?

  • 4,Activity 横竖屏切换生命周期有哪些变化?

  • 5,显示Intent 和隐式Intent 有和区别?

Service:

Service 也是我们用得比较多的一个组件,关于Service ,我们需要知道:

  • Service 的生命周期

  • Service 的两种启动方式:

1, startService

2, bindService

2种启动方式 所走的生命周期方法是不一样的

  • Service vs IntentService:

Service 和IntentService 个自用于不同的场景,想知道他们各自的使用场景和区别吗?查资料去吧!

BroadcastReceiver:

广播相关的知识点:广播有两种注册方式,Manifest 清单文件中注册和 代码中动态注册,代码中注册的广播一般为局部广播,最好 register 和 unRegister 成对出现,别忘了反注册。

全局广播可以跨应用访问,存在安全隐患并且效率不高,因此出现了更安全、更高效的替代者:LocalBroadcastReceiver,使用非常简单。如果在代码中看到的是LocalBroadcastReceiver而不是BroadCastReceiver,我会给你加分。

ContentProvider

ContentProvider 可能用得不是很多,可以用于共享数据,提供数据源,掌握会写增删改查就好了。

啰嗦一下:四大组件需要在清单文件中声明。

2 . Android 常用的几种布局

  • 1,帧布局 FrameLayout

  • 2,线性布局 LinearLayout

  • 3,相对布局 RelativeLayout

  • 4,Google 新出的约束布局ConstraintLayout

3 . Android Studio

Android Studio 是我们Android开发的常用工具,熟练操作和使用上面的快捷键和一些插件,对我们的开发效率有很大的帮助。

Android Studio 有很多好用的插件,可以根据自己的需要安装,如:

  • GsonFormat

  • Parcelable 序列化

  • 翻译插件:对于英文不是很好的很有帮助。

除了一些好用的插件之外,还可以根据自己的习惯设置一些快捷键,总之,工欲善其事,必先利其器。要提高开发效果,先配置好我们的开发工具。

4 . Fragment

  • 1,Fragment 的生命周期

  • 2,Fragment 与fragment 之间的通讯方式

  • 3,Fragment 与Activity 之间的通讯方式

  • 4,Fragment + ViewPager 懒加载

  • 5,Fragment +TabLayout 选项卡

5 . 数据库相关

Android 自带数据库 Sqlite, 关于数据库,我们应该熟悉:

  • 1,数据库和表的创建

  • 2,数据的增删、改、查。

  • 3,数据库升级:

这点尤为重要,因为数据库的升级往往伴随着数据的升级,不能升级之后把前面的用户数据弄没了。

  • 4,三方库:GreenDao:

如果你觉得自己做这些操作很麻烦的话,你可以选择你一些三方的库

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享

,如GreenDao,已经为你封装了所有的这些操作,只需简单配置就能使用。当然,Github 上还有很多类似的库,根据自己的需要选择。

6 . 常用控件基础控件

  • 1,RecyclerView & ListView

  • 2,ViewPager

  • 3,TextView

  • 4,ImageView

  • 5,Button

  • 6,Checkbox

  • 7,RadioButton

所有复杂的界面都由这些简单的基础控件组成,因此,你需要好好了解一下他们的各种属性。

三、Android 进阶

上面列举了一些Android的基础知识点,仅仅熟悉这些还不够,还需要学习Android开发中更高级一点的东西:

1 . View

上面列举了一些基础的View和控件,但是这些基础控件有时候不能满足我们的需求,这时候就需要自定义View了。

自定义View:

自定义view 的三种方式:

  • 1,组合基础控件

  • 2,继承基础控件,做相应的更改。

  • 3,继承View 或 ViewGroup:

这种方式也是我们用的比较多的一种方式,这种方式比较自由,定制度高,需要实现下面几个方法

(1) onMeasure()

(2) onLayout()

(3) onDraw()

执行顺序为:onMeasure()->onLayout() -> onDraw()

View事件分发机制:

自定义view 的时候,我们需要响应用户的各种事件,这个时候我们就需要了解View的事件分发机制了。

关于事件分发机制,看一张比较经典的图(U型图):

image

当这几个方法都调用super 的时候,整个事件会走完这个U型图。

事件分发机制这一块还是比较难理解的,更多详解请查资料。

App 的几种架构

  • MVC

  • MVP

  • MVVM

常见的三种架构,根据自己的业务需要选择,每种架构都有自己的有点和缺点,另外,我觉得一个APP 中,多种架构是可以并存的,比如:MVC和 MVP 。一个非常简单的展示界面,不必为它弄一个 P 层,反而变得复杂了。

3 . Android 动画

(1) Android 中的5种基础动画

  • 平移动画

  • 缩放动画

  • 旋转动画

  • Alpha 动画

  • 帧动画

(2) 属性动画

补间动画很简单,但是它的场景使用很有限,它只能对一个View做动画。有的时候,我们需要更为精准的控制,我们要控制一个属性来做动画,这个时候属性动画就派上用场了。属性动画的几个相关类:

  • ObjectAnimator

  • ValueAnimator

  • AnimatorSet

属性动画用得就比较广泛了,属性动画 + 自定义View 配置 Path和贝塞尔曲线 能做出很多复杂的漂亮的效果。

(3)矢量动画

  • svg

  • VectorDrawable

  • AnimatedVectorDrawable

矢量动画大家可能比较陌生,Android Studio 支持将一个Svg 文件导入生成一个path 路径,用VectorDrawable 和AnimatedVectorDrawable 来实现矢量动画。但是需要在Android5.0 以上。

4 . Material Design 系列

Android 5.0 开始,Google 推出了 Material Design 设计规范,Android support 包中也加入了符合Material Design 设计规范的各种控件:

  • 1,Toolbar 的使用

  • 2,AppbarLayout+CollapsingToolbarLayout

  • 3, Behavior 相关:

(1),BottomSheetBehavior

(2), BottomSheetDialog

(3),SwipeDismissBehavior

(4), 自定义Behavior

  • 4, TextInputLayout + TextInputEditText

  • 5, TabLayout

  • 6, BottomNavigationView

  • 7 , CardView 阴影卡片

  • 8 ,Snackbar , FloatActionButton

利用这些控件,可以做出很多符合material Design 设计规范的效果和动画。

更多关于Material Design 的用法,请看我的系列博客

:http://www.jianshu.com/u/35167a70aa39

5 . Android 多媒体

多媒体相关也是Android 开发中比较重要并且较难的一块了,它设计到相机、视频、音频相关的开发。

相机开发:

1, 使用自带的相机APP 拍照

2,系统相册选择照片

3,系统相机或相册获取的照片裁剪

4,使用相机API 开发相机:

(1), Android 5.0 (API 21 )以下 使用Camera API

(2) , Android 5.0 以上使用 Camera2 API

5 ,自定义相册开发

6 , 自定义裁剪界面

Android视频开发:

(1)视频播放

MediaPlayer

VideoView

(2)视频编解码

音频开发:

AudioPlayer

音乐播放器

音视频开发这一块门槛较高,但是这也是比较吃香的一个领域,把这一块吃透了,你的优势就很大了,现在的直播这么火,对于这一块的需求还是比较大的。

6 . Git

Git 版本控制 也是我们常用的,熟悉各种Git 命令。对于代码的提交、代码拉取,历史版本的查看等Android Studio 已经集成好了,但是还是推荐大家日常用命令行方式操作,这样有助于我们熟悉各种Git 命令。

7. Android 权限适配

Android 6.0 以上权限适配。

8 . Gradle

  • 自定义Gradle插件

  • Gradle 多渠道打包

以上就是Android 相关的一些知识点。

四、学习了解开源库

Github 绝对是我们程序员的宝贵财富,上面有各种各样的开源库,只有你想不到的,没有你找不到的。各大公司也有各种各样的开源的解决方案。

以下是比较流行的一些框架:

图片加载框架:

  • Universal-Imageloader

  • Picasso

  • Glide

  • Frecssco

网络相关框架:

  • Retrofit

  • Okhttp

  • Volley

RxJava :

  • RxJava

  • RxAndroid

Android开发如何进阶,薪资如何跟上年龄的脚步?,深度解读Netty相关推荐

  1. 2020最新Android开发中高级进阶书籍推荐

    很多Android开发小伙伴进阶学习都是卖一堆技术书籍.这里整理了目前最主流的中级,高级进阶书籍.感兴趣可以收藏一下,作为一个参考~ 一,中级进阶推荐看一下以下这几本书: 中级进阶书籍相信大家很熟悉, ...

  2. Android开发高级进阶内涵段子APP项目实战视频教程

    Android开发高级进阶内涵段子APP项目实战课程视频教程下载.本课程带你从框架入手,开启我们的Android进阶之旅,开始写一步一步完善整个项目. 项目目录: 01.Android进阶之旅与你同行 ...

  3. Android开发如何进阶?

    本着每周至少有干货产出的原则,今天必须写篇干货来回馈大家,我这的干货可是不收费的哦,争取以后的目标是让你们看完我的文章不赞赏都觉得亏得慌! 之前不少人都问我同一个问题,就是我学习Android有一两年 ...

  4. android开发书籍推荐!知乎上已获千赞,已拿offer附真题解析

    前言 每个程序员都有一个梦想,那就是进一线互联网公司深造,不要跟我说你不想进去,如果给你一个这样的平台,不管是薪资待遇还是接触的高度来说,对我们程序员来说都是一个机会,我以前有一个同事,就是从阿里出来 ...

  5. Android开发之百度地图在地图上绘画圆的方法(官方方法)

    直接看图: 直接上代码: 绘制圆 圆由Circle类定义,开发者可以通过CircleOptions类设置圆心位置.半径(米).边框以及填充颜色. 示例代码如下://圆心位置 LatLng center ...

  6. android开发自定义View(四)仿掌上英雄联盟能力值分析效果

    本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 原始图效果 模仿效果 PNG GIF 流程 绘制中心线,用于计算外层多边形各点的坐标 绘制最外层多边形 分析原型图算出每个多边形之间 ...

  7. 转载:Android开发相关的Blog推荐——跟随大神的脚步才能成长为大神

      转载自赵凯强的博客: http://blog.csdn.net/zhaokaiqiang1992/article/details/43731967  本篇文章主要纪录赵凯强先生在学习过程中,发 ...

  8. Android开发相关的Blog推荐——跟随大神的脚步才能成长为大神

    转载:https://blog.csdn.net/zhaokaiqiang1992/article/details/43731967 CSDN 鸿洋:http://blog.csdn.net/lmj6 ...

  9. Android AIDL 传递对象(Parceable),深度解读Netty

    import xj.musicserver.MusicInfo; interface IPlayListener { /** Demonstrates some basic types that yo ...

最新文章

  1. Django+xadmin打造在线教育平台(十)
  2. 在控制台输出口,根据内存地址,找到被过度释放的对象!
  3. “docker exec“ requires at least 2 arguments. See ‘docker exec --help‘.
  4. shell编程-实现线性筛
  5. 【论文】Awesome Relation Extraction Paper(关系抽取)(PART III)
  6. Balancing Act(树的重心入门)
  7. java快排原理_快速排序 java实现 (原理-优化) 三路快排
  8. JAVA视频全套在线学习
  9. 使用Python,OpenCV旋转图像任意角度(完整和局部丢失~)
  10. [ITIL学习笔记]ITIL认证相关
  11. 2020年6月——北京大学《软件工程》笔记
  12. 炒股魅力:数据分析侠变身“赚钱机器”
  13. 【Unity3D】sRGB伽马(gamma)空间和sRGB Frame Buffer线性空间的简单介绍
  14. 【AI参赛经验】汉字书法识别入门—by:真的学不会
  15. Atmel 官方网站中文版
  16. 跑步时戴什么耳机好、分享五款最适合跑步的运动耳机排名清单
  17. 主机通过代理上网虚拟机网络连接配置
  18. python混淆ios代码_iOS-代码混淆
  19. 对于拓展欧几里德算法的理解
  20. oracle中in与exists,Oracle中in和exists的区别

热门文章

  1. 微信修改基本配置信息
  2. 团队的英文翻译缩写_动漫团队名称-团队英文名称~~人数不限的、 最好是** – 手机爱问...
  3. 苹果4怎么越狱_什么是刷机?什么是越狱?刷机和越狱是一回事吗?
  4. Docker创建私有仓库
  5. Zabbix 分布式监控
  6. html div 移除,js动态创建及移除div的方法
  7. pywebview:使用python构建桌面客户端应用
  8. vite安装失败问题Emitted ‘error‘ event on ChildProcess instance at:-4058esbuild.exe
  9. 2022-2028年全球与中国婴儿食品包装行业产销需求与投资预测分析
  10. java中怎么输入中文_MultiMC下载-MultiMC中文实用版 v1.0