Android开发重要知识点
一、网络
1、https原理
2、tcp/ip协议
三次握手:https://www.cnblogs.com/cenglinjinran/p/8482412.html
四次挥手:https://www.zhihu.com/question/63264012
二、多线程
java基础知识相关
Android相关
1、从点击一个图标到这个应用启动的全过程
https://blog.csdn.net/freekiteyu/article/details/79318031
性能优化
https://www.jianshu.com/p/797395731747
三、第三方插件
1、ProtoBuffer
2、EventBus
https://www.jianshu.com/p/e7d5c7bda783
https://www.jianshu.com/p/d9516884dbd4
https://baike.baidu.com/item/EventBus/20461274?fr=aladdin
ThreadLocal、ThreadLocal内存泄漏问题
HashMap,ConcurrentHashMap
反射
注解
3、ButterKnife
和androidx冲突问题,R2代替R
4、Retrofit
官网:https://square.github.io/retrofit/
与OkHttp的区别:定位不一样,OkHttp功能更强更多,而Retrofit是对OkHttp的进一步封装和增减,使其使用更安全,更方便
四、jetpack
1、RecyclerView
缓存问题
多种布局问题:https://www.jianshu.com/p/66702b7a6881
刷新界面问题
空数据界面显示问题:RecyclerView设置空数据视图
2、ConstraintLayout
https://www.jianshu.com/p/17ec9bd6ca8a
五、java基础
1、反射
(1)java反射机制是什么?
java反射机制是一种在程序运行状态下,动态获取或者调用类或对象的方法、字段等所有成员信息的功能。
其本质就是在得到指定类X的Class(Class对象)后,根据该Class对象反向获取类X的各种信息。当X.java被编译后生成X.class文件,当程序运行时,JVM会在磁盘中寻找X.class文件并加载到JVM内存中为其分配内存空间,同时JVM会自动为X.class创建一个Class对象,在ClassLoader中,有且只有一个X类的Class对象。
(2)为什么要使用反射(使用反射有什么好处)?
1)可以动态编译,在运行期才确定类型,体现java的灵活性。比如某个类“A”由同伴开发,但没有开发完,而我需要预先写道代码中,如果直接通过new A()的给方式,编译肯定会报错,但使用Class.forName("A")这样的反射方式就可以通过编译,不影响自己开发和编译。由于Class.forName("...")中的参数是字符串,可以将该字符串写入配置文件,通过I/O的方式读取,这样就可以通过修改配置文件来控制加载哪个类了,java中的Spring就有很多这种操作。
2)可以访问类中用private修饰的字段、方法、构造函数等成员。
3)可以对某些类/方法/字段起到“后门”作用。比如某些类方法/字段比较敏感,为了避免外部人员不小心使用到而导致某些严重后果,就需要“隐藏”起来(比如用private修饰),但是内部开发人员又需要用到,这时候就可以使用反射的方式来实现。因为相比于通过new的方式直接使用,反射方式会复杂一些,且需要对该敏感的类/方法/字段比较了解。(这个说法是在某教学课堂上老师讲到的,听起来挺有道理的,但其它地方好像没听说过这种说法)
4)可以越过泛型。比如ArrayList定义好元素的类型后,就无法添加其它类型了,但是通过反射的方式却可以做到,可以参考后文的链接。
(3)反射有什么弊端?
1)性能差;原因后面有说明。为了避免这一点,有些地方通过使用注解生成器的方式将需要反射的地方提前到编译期完成,比如EventBus就可以通过选择使用注解生成器来实现这一点。有个比较有名的java反射框架jOOR,可以了解一下。
2)会破坏一些类的安全性。上面的第2)和第3)点也说到了,可以使用private修饰的成员等这些不太希望被“外人”使用的功能。
(4)反射为什么性能差?
没找到权威答案,网上零零星星收集了一些(参考https://www.zhihu.com/question/19826278):
1)jvm无法优化反射相关得代码;
2)动态加载,原本在编译期做的事,等到运行期才做;
3)反射的具体逻辑是委托给MethodAccessor实现,而该类需要在第一次调用invoke时才会实例化对象,是一种lazy init;
4)method.invoke方法,每次调用时都需要对参数进行数组包装;
5)method.invoke方法中要对方法的可见性做检查;
6)MethodAccessor对象实现反射有两种方式:开始15次是native方式,以后是java方式。在使用java方式时,其invoke方法中要检查参数的类型匹配。
2、面向对象
(1)面向对象的三大特性:封装、继承、多态;
多态:1)重写,override,子类覆盖父类的方法;重载,overload,同一个类中方法名相同,参数必须不同,返回值、修饰符可以不同。
Android开发重要知识点的更多相关文章
- 2016-2017-2 20155322 实验四 Android 开发基础
2016-2017-2 20155322 实验四 Android 开发基础 实验内容 下载和安装Android Studio 学会使用Android Studio进行简单的Android开发 实验知识 ...
- 40k*16 薪,五年Android开发4轮面试拿下腾讯 Offer !(附真题)
概述 感觉毕业后时间过得真快啊,从16年6月本科毕业入职了一家不大的公司,到现在快五年了,前段时间金三银四想着找一个新的工作,前前后后花了一个多月的时间复习以及面试,前几天拿到了腾讯的offer,想把 ...
- 学Android开发,入门语言java知识点
学Android开发,入门语言java知识点 Android是一种以Linux为基础的开源码操作系统,主要使用于便携设备,而linux是用c语言和少量汇编语言写成的,如果你想研究Android,就去学 ...
- Android开发涉及有点概念&相关知识点(待写)
前言,承接之前的 IOS开发涉及有点概念&相关知识点,这次归纳的是Android开发相关,好废话不说了.. 先声明下,Android开发涉及概念比IOS杂很多,可能有很多都题不到的.. 首先由 ...
- Android开发中目前流行控件和知识点总结
Android开发中目前流行控件和知识点总结 1.SlidingMenu 滑动菜单 应用案例:Facebook . Path 2.0 .人人.网易新闻 下载地址: https://github.c ...
- Android开发工程师文集-Android知识点讲解
前言 大家好,给大家带来Android开发工程师文集-Android知识点讲解的概述,希望你们喜欢 WebView讲解 一般通过Intent调用系统的浏览器: Uri uri = Uri.parse( ...
- Android 开发必备的知识点——JVM基础【转】
image 1.JVM与操作系统的关系 Java Virtual Machine JVM 全称 Java Virtual Machine,也就是我们耳熟能详的 Java 虚拟机.它能识别 .class ...
- 两年Android开发三面上岸腾讯,这些核心知识点建议收藏
概述 感觉毕业后时间过得真快啊,从 19 年 7 月本科毕业入职后,到现在快两年了,前段时间金三银四期间想着找一个新的工作,前前后后花了一个多月的时间复习以及面试,面试好几家大厂,最后选择了腾讯.也祝 ...
- Android开发网上的一些重要知识点[经验分享]
1. android单实例运行方法 我们都知道Android平台没有任务管理器,而内部App维护者一个Activity history stack来实现窗口显示和销毁,对于常规从快捷方式运行来看都是s ...
- Android开发的基础知识点
1.Android开发的四大组件: Activity:android应用程序上看到的一页. Service:运行在后台,可以其他组件交互(音乐播放器). BroadcoastReceiver:用来对外 ...
随机推荐
- EF Core报错“Format of the initialization string does not conform to specification starting at index 0.”
问题分析: 今天在EF Core数据库迁移的过程中无意中发现此错误,我的项目仅仅复制黏贴了配置文件而已,自此发现是数据库配置文件json在作祟. 对比了下发现是.json文件没有被设置"复制 ...
- numpy argsort排序如何让其稳定排序
numpy.argsort(a, axis=-1, kind=None, order=None) Parameters: aarray_like Array to sort. axis int or ...
- ASP.NET Core – View Component
前言 以前写过 Asp.net core 学习笔记 ( ViewComponent 组件 ), 这篇作为翻新版. 参考 Docs – View components in ASP.NET Core D ...
- 【QT性能优化】QT性能优化之QT6框架高性能图形视图框架快速展示百万图元大规模场景
QT性能优化之QT6框架高性能图形视图框架快速展示百万图元大规模场景 简介: 本文展示了使用QT图形视图框架在一个场景中绘制出百万个图元的程序的效果以及源代码:本文还介绍了QT图形视图框架的一些实用功 ...
- 第43天:WEB攻防-PHP应用&SQL注入&符号拼接&请求方法&HTTP头&JSON&编码类
#PHP-MYSQL-数据请求类型 SQL语句由于在黑盒中是无法预知写法的,SQL注入能发成功是需要拼接原SQL语句,大部分黑盒能做的就是分析后各种尝试去判断,所以有可能有注入但可能出现无法注入成功的 ...
- AD域下,没有登录服务器处理登录请求
原因: IP地址配置有问题 或者 DNS : 解决办法: 重新设置 IP地址 和 DNS : 此案例中, 切换到 test 账户(域管理员)后发现 , 未配置 IP地址 和 DNS :
- /proc/pids/io
rchar:代表自进程启动以来所读取的总字符数,包括通过缓存或直接读取的字符.单位是字节(bytes). wchar:代表自进程启动以来所写入的总字符数,包括通过缓存或直接写入的字符.单位是字节(by ...
- 2021年11月墨天轮国产数据库排行榜:openGauss闯入前三,Kingbase流行度与日俱增,TDengine厚积薄发
2021年11月的国产数据库流行度排行榜已在墨天轮发布,本月共有163家数据库参与排名.就前15名的总体情况来看,除openGauss反超OceanBase闯入前三,TDengine厚积薄发来到第15 ...
- 08 ELMo模型(双向LSTM模型解决词向量多义问题)
博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...
- 从2s优化到0.1s,我用了这5步
前言 分类树查询功能,在各个业务系统中可以说随处可见,特别是在电商系统中. 但就是这样一个简单的分类树查询功能,我们却优化了5次. 到底是怎么回事呢? 背景 我们的网站使用了SpringBoot推荐的 ...