Android高级面试题大全(持续更新中),android驱动开发权威指南pdf

本文深入探讨了Android面试中常见的高级问题,包括单例模式的实现方式及其优缺点,synchronized与volatile的区别,界面卡顿原因,内存泄漏与ANR的成因,Activity与Fragment生命周期的联系,以及Glide的缓存策略。同时,文章涵盖了数据存储、IntentService的作用,本地广播与全局广播的区别,以及Handler、Thread和HandlerThread的差异。此外,还讨论了如何在低版本SDK中实现高版本API功能,Activity的launch mode应用场景,以及touch事件的传递流程和Android性能优化策略。
摘要由CSDN通过智能技术生成

双重检测锁模式(由于JVM底层模型原因,偶尔会出问题,不建议使用)

静态内部类式(线程安全,调用效率高,可以延时加载)

枚举类(线程安全,调用效率高,不能延时加载,可以天然的防止反射和反序列化调用)

10. 通过静态内部类实现单例模式有哪些优点

线程安全,调用效率高,可以延时加载

11. synchronized volatile关键字有什么区别?以及还有哪些同样功能的关键字

(1) volatile是变量修饰符,而synchronized则作用于一段代码或者方法。

(2) volatile只是在线程内存和main memory(主内存)间同步某个变量的值;而synchronized通过锁定和解锁某个监视器同步所有变量的值。显然synchronized要比volatile消耗更多资源。

const、final、lock

12. 界面卡顿的原因有哪些?

UI线程(main)有耗时操作

视图渲染时间过长,导致卡顿

13. 造成OOM/ANR 的原因?

OOM: (1)不恰当地使用static关键字 (2)内部类对Activity的引用 (3)大量Bitmap的使用会导致程序包运行时的内存消耗变大 (4)游标Cursor对象用完应该及时关闭 (5)加载对象过大 (6)相应资源过多,来不及释放。

ANR: (1)在5秒内没有响应输入的事件(IO操作耗时、数据库操作复杂耗时、主线程非主线程产生死锁等待、网络加载/图片操作耗时、硬件操作耗时) (2)BroadcastReceiver在10秒内没有执行完毕(Service binder数量达到上限、Service忙导致超时无响应)

14. Activity与Fragment生命周期有何联系

在创建的过程中,是Activity带领着Fragment,在销毁的过程中,是Fragment带领着Activity。

这里写图片描述

15. Glide三级缓存

内存缓存,磁盘缓存、网络缓存(由于网络缓存严格来说不算是缓存的一种,故也称为二级缓存)。缓存的资源分为两种:原图(SOURCE)、处理图(RESULT)(默认)。

内存缓存:默认开启的,可以通过调用skipMemoryCach

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值