Android面试题 - LruCache
一、原理
LruCache 其实挺简单的,本质是对LinkHashMap
的封装,然后通过设置maxSize
来控制LinkHashMap
的容量。
二、注意点
2.1 LruCache 是线程安全的
它的所有属性都是私有属性
对私有属性的setter
和getter
操作都是加了锁处理
LruCache 其实挺简单的,本质是对LinkHashMap
的封装,然后通过设置maxSize
来控制LinkHashMap
的容量。
它的所有属性都是私有属性
对私有属性的setter
和getter
操作都是加了锁处理
AsyncTask 本质上是对handler和线程池对封装,在线程池中执行耗时任务,当任务完成或任务更新时,向主线程的Handler发送消息,在Handler中执行finish()
、onProgressUpdate()
等方法。
通过android的沙箱机制,可以在不同的应用间共享代码、数据、或资源文件。
阅读本文前需要了解android的沙箱机制
|
Context.CONTEXT_INCLUDE_CODE:
把参数包名对应的应用中的代码包含到Context中,这样当前应用才能访问context应用中的类,如果context对应的应用不能安全的加载到当前应用中,会报出SecurityException,如果想要加载另一个应用,访问它的数据,则这个标记必须设置
CONTEXT_IGNORE_SECURITY:忽略加载context对应的应用这个过程中的安全限制,总是允许加载,和CONTEXT_INCLUDE_CODE配合使用,代表不管是否安全,都要加载,一般使用要小心。
Android 系统中,应用是在Dalvik 虚拟机实例三运行的,而每一个虚拟机都是一个独立都进程,而在linux中,每一个进程都是相互隔离的,Android 这种基于 Linux 的进程 “沙箱” 机制,是整个安全设计的基础之一。
因为Android是继承于linux,因此继承了linux用户管理的特点,并根据移动端的特点进行了优化。
Android 沙箱的核心机制基于以下几个概念:
1、标准的 Linux 进程隔离;
2、大多数进程拥有唯一的用户 ID(UID);
3、以及严格限制文件系统权限。