博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android性能优化面试题集锦,完整PDF
阅读量:3610 次
发布时间:2019-05-21

本文共 2407 字,大约阅读时间需要 8 分钟。

都说大厂面试必问源码,可很多人看完MMKV 源码、Handler 源码、Binder 源码、OkHttp 源码等源码记不住,是脑子有问题吗?当然不是!是因为你没有掌握学习源码的技巧。

我的朋友子路,很多人都叫他路神,称他为“国内源码讲解最好的第一人”。

子路说他以前学习MMKV 、ARouter 源码,只能去翻书,去报个线下培训班,或者向其他公司的大牛请教,一个疑问有时候会卡好几天。

但现在不一样,各种免费的资料和视频,学习成本太低了!但是网上的内容质量参差不齐,都是东拼西凑的,辛辛苦苦学半天,面试还是挂了…

**学习成本越来越低,后果就是对程序员的要求越来越高。**以前你只需掌握简单的源码,工作随便找,基本面试就这么几套。现在,你只会这些再出去试试?

二、JetPack里的组件

上图就是JetPack中包含的组件列表,每个组件都是相对独立的,可以被单独使用和构建。其中像被介绍的最多,也是最常被使用的LiveData, ViewModel, Room, Navigation, WorkManager之类的都发布了正式版,而CameraX, Compose之类的还处在Alpha版本,未正式发布,官方并不建议在生产环境中使用。

然后说下,JetPack所有的组件都是基于AndroidX构建的,如果想在项目中使用JetPack需要先将项目中对Support Lib的依赖全部换成AndroidX

Android目前已经发展了11年,可以说是比较成熟的技术了,一开始时框架很少,也没有什么规范,所有的代码都是要自己写,比如网络请求,数据库请求,数据解析等等。后来出现了一些框架来帮助开发者快速进行开发,比如XUtils、Volley、OKHttp、EventBus等,随着框架越来越多,一个应用可以有多种技术选型,直接导致应用开发越来越不规范,导致做出来的应用质量参差不齐,这显然不是谷歌想看到的。谷歌随后推出了MVP和MVVM相关的官方例子,效果很一般,而且覆盖面只是在架构上,Goole I/O 2018大会上推出的Android Jetpack有望解决以上的问题。

三、Android Jetpack简介

Jetpack并不是一个框架或者组件,它是一套库、工具和指南的集合,可帮助开发者更轻松地编写优质应用。这些组件可帮助开发者遵循最佳做法、摆脱编写样板代码的工作并简化复杂任务,以便将精力集中放在所需的代码上。

Android Jetpack中的很多组件并不都是新开发的,而是很早就有了,比如在Goole I/O 2017大会时推出了 Android Architecture Component(AAC),它包括了LifeCycle、LiveData、ViewModel、Room。在Goole I/O 2018大会上,
用AndroidX替代了Android Support Library,并在Android Architecture Component的基础上发布了Android Jetpack,AndroidX也是属于Android Jetpack。

Jetpack主要特性有以下三点:

1.加速开发

组件可单独使用,也可以协同工作,当使用kotlin语言特性时,可以提高效率。

2.消除样板代码

Android Jetpack可管理繁琐的Activity(如后台任务、导航和生命周期管理)。

3.构建高质量的强大应用

Android Jetpack组件围绕现代化设计实践构建而成,具有向后兼容性,可以减少崩溃和内存泄漏。

四、Android Jetpack分类

下图是Jetpack的分类。

谷歌仍旧不断的完善Android Jetpack,截至到2019年8月已经有很多新加的组件并没有显示在上图中,比如CameraX等。Android Jetpack分类有4种,分别是Architecture、Foundationy、Behavior、UI,下面分别介绍下。

1. Architecture(架构组件)

Architecture指的是架构组件,帮助开发者设计稳健、可测试且易维护的应用。架构组件可以说是对应用开发帮助最大的组件,本系列也是围绕着架构组件进行讲解。

DataBinding:以声明方式将可观察数据绑定到界面元素,通常和ViewModel配合使用。

Lifecycle:用于管理Activity和Fragment的生命周期,可帮助开发者生成更易于维护的轻量级代码。

LiveData: 在底层数据库更改时通知视图。它是一个可观察的数据持有者,与常规observable不同,LiveData是生命周期感知的。

Navigation:处理应用内导航。

Paging:可以帮助开发者一次加载和显示小块数据,按需加载部分数据可减少网络带宽和系统资源的使用。

Room:友好、流畅的访问SQLite数据库。它在SQLite的基础上提供了一个抽象层,允许更强大的数据库访问。

ViewModel: 以生命周期的方式管理界面相关的数据,通常和DataBinding配合使用,为开发者实现MVVM架构提供了强有力的支持。

WorkManager: 管理Android的后台的作业,即使应用程序退出或设备重新启动也可以运行可延迟的异步任务。

最后

ger**: 管理Android的后台的作业,即使应用程序退出或设备重新启动也可以运行可延迟的异步任务。

最后

想要了解更多关于大厂面试的同学可以**免费获取《面试文档》**除此之外,我也分享一些免费的优质资源,包括:Android学习PDF+架构视频+源码笔记高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 这几块的内容。分享给大家,非常适合近期有面试和想在技术道路上继续精进的朋友。快来获取学习资料吧~

转载地址:http://tzckn.baihongyu.com/

你可能感兴趣的文章
VS Code 编辑文件延迟大,卡顿的解决办法
查看>>
Java中递归的如果想要达到C++的传参效果的一种写法
查看>>
Hadoop在window上运行出现:java.io.IOException: (null) entry in command string: null chmod 0644
查看>>
最小生成树的 Krusal 算法和 Prim 算法 Java 实现
查看>>
CentOS下设置默认JDK
查看>>
剑指offer 43.左旋转字符串
查看>>
剑指offer 47. 求1 + 2 + 3 + .... + n
查看>>
分布式和集群的区别
查看>>
本科毕设完整流程和注意事项
查看>>
不要想着憋大招,先完成每个小招
查看>>
ps中怎么把一张图片的一种颜色全部替换成另外一种颜色
查看>>
答辩PPT撰写和答辩注意事项
查看>>
第二次实习的实习总结
查看>>
PPT的一些常用操作
查看>>
Java面试题解析(基础篇,附答案)
查看>>
Spring 常用的三种注入方式
查看>>
MyBatis 一级缓存在分布式下的坑你知道吗?
查看>>
2020年2月JVM面试的30个知识点
查看>>
在家办公7天整理Spring Cloud知识点大全
查看>>
看看这些Java代码开发规范吧!你好,我好,大家好!
查看>>