Android面试题 - LruCache

一、原理

LruCache 其实挺简单的,本质是对LinkHashMap的封装,然后通过设置maxSize来控制LinkHashMap的容量。

二、注意点

2.1 LruCache 是线程安全的

它的所有属性都是私有属性

image-20200907092730822

对私有属性的settergetter操作都是加了锁处理

image-20200907092920801
阅读更多

Android面试题 - AsyncTask

一、原理

AsyncTask 本质上是对handler和线程池对封装,在线程池中执行耗时任务,当任务完成或任务更新时,向主线程的Handler发送消息,在Handler中执行finish()onProgressUpdate()等方法。

阅读更多

沙箱机制下的应用间数据共享

通过android的沙箱机制,可以在不同的应用间共享代码、数据、或资源文件。
阅读本文前需要了解android的沙箱机制

一、代码共享


Context packageContext = createPackageContext("com.example.signatureapp", Context.CONTEXT_INCLUDE_CODE|Context.CONTEXT_IGNORE_SECURITY);

Context.CONTEXT_INCLUDE_CODE:

把参数包名对应的应用中的代码包含到Context中,这样当前应用才能访问context应用中的类,如果context对应的应用不能安全的加载到当前应用中,会报出SecurityException,如果想要加载另一个应用,访问它的数据,则这个标记必须设置

CONTEXT_IGNORE_SECURITY:忽略加载context对应的应用这个过程中的安全限制,总是允许加载,和CONTEXT_INCLUDE_CODE配合使用,代表不管是否安全,都要加载,一般使用要小心。

阅读更多

android 沙盒模型

一、Android延用的linux权限模型

1.1 android沙箱

Android 系统中,应用是在Dalvik 虚拟机实例三运行的,而每一个虚拟机都是一个独立都进程,而在linux中,每一个进程都是相互隔离的,Android 这种基于 Linux 的进程 “沙箱” 机制,是整个安全设计的基础之一。

因为Android是继承于linux,因此继承了linux用户管理的特点,并根据移动端的特点进行了优化。

Android 沙箱的核心机制基于以下几个概念:

1、标准的 Linux 进程隔离;

2、大多数进程拥有唯一的用户 ID(UID);

3、以及严格限制文件系统权限。

阅读更多