![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android面试
文章平均质量分 71
Android面试的一些总结
东方贵族
从事安卓开发的日子压抑并快乐着,现在的付出是为了将来的回报。
展开
-
注解和反射
注解和泛型擦除后还能获取的原因原创 2022-04-20 21:02:00 · 1815 阅读 · 0 评论 -
Handler相关问题
1.一个线程有多少个Handler一个线程可以有无数个Handler,直接new出来就行2.一个线程有几个Looper,如果保证?一个线程只有一个Looper,原因是:// 1.构造方法私有化private Looper(boolean quitAllowed) { mQueue = new MessageQueue(quitAllowed); mThread = Thread.currentThread(); } *****// 2.prep原创 2022-04-04 10:03:29 · 526 阅读 · 0 评论 -
LeakCanary源码分析
**原理:watch(监视)一个即将要销毁的对象**为什么产生内存泄露?1.当一个对象已经不需要再使用了,有一个正在使用的对象持有了这个对象的引用2.有些对象只有有限的生命周期内存泄漏会导致什么问题?1.OOM3.内存泄漏的场景单例导致内存泄漏非静态内部类创建静态实例 (非静态内部类会持有外部内的引用)内部类虽然和外部类写在同一个文件中, 但是编译完成后, 还是生成各自的class文件,内部类通过this访问外部类的成员。1 编译器自动为内部类添加一个成员变量, 这个成员变量的类型原创 2022-03-23 22:18:30 · 87 阅读 · 0 评论 -
EventBus源码解析
1.通过单例和构建者模式进行构建,对数据进行保存public static EventBus getDefault() { EventBus instance = defaultInstance; if (instance == null) { synchronized (EventBus.class) { instance = EventBus.defaultInstance; if原创 2022-03-23 20:20:16 · 234 阅读 · 0 评论 -
HashMap的初始容量为16,扩容为何是2的次幂
HashMap的hash的作用首先要了解HashMap的hash实现过程,hash方法的功能是根据key来定位K-V在链表数组中的位置的,也就是hash方法的输入应该是个Object类型的key(注意:如果key传入的是基本数据类型会被转换为其包装类),输出应该是个int类型的数组下标。常规思路是通过key的hashCode对HashMap的容量进行取模就可以了,但是考虑到效率的问题HashMap的hash方法实现还是有一定复杂的。hash的实现具体实现上由两个方法int hash(Object)原创 2022-03-16 13:55:20 · 1038 阅读 · 0 评论