1.LRUCache原理
LRU,即Least Recently Used的缩写,就是最近最少使用,通俗意思就是最近最少被使用的会最先被从内存中除去
Android中自带LruCache的基本实现,其实LruCache的思路就是通过LinkedHashMap去存储或删除数据,最主要的还是get(),put()以及释放数据 的trimToSize()方法,当然这个LruCache只是google简单实现的缓存,我们可以根据需求使用LinkedHashMap自己去实现需要的LruCache
2.App 是如何沙箱化,为什么要这么做
沙箱,对使用者来说可以理解为一种安全环境,对恶意访问者来说是一种限制。
在Android系统中,应用(通常)都在一个独立的沙箱中运行,即每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。
3.既然RecyclerView在很多方面能取代ListView,Google为什么没把ListView划上一条过时的横线?
答案: 可以沿着回收机制来回答。ListView采用的是RecyclerBin的回收机制在一些轻量级的List显示时效率更高
4.MVC,MVP,MVVM的区别
MVC 软件可以分为三部分
视图(View):用户界面
控制器(Controller):业务逻辑
模型(Model):数据保存
各部分之间的通信方式如下:
View传送指令到Controller
Controller完成业务逻辑后,要求Model改变状态
Model将新的数据发送到View,用户得到反馈
Tips:所有的通信都是单向的。
MVP
MVP模式将Controller改名为Presenter,同时改变了通信方向。
各部分之间的通信,都是双向的
View和Model不发生联系,都通过Presenter传递
View非常薄,不部署任何业务逻辑,称为"被动视图"(Passive View),即没有任何主动性,而Presenter非常厚,所有逻辑都部署在那里。
MVVM
MVVM模式将Presenter改名为ViewModel,基本上与MVP模式完全一致。
唯一的区别是,它采用双向绑定(data-binding):View的变动,自动反映在ViewModel,反之亦然。
5.如何保证一个后台服务不被杀死;比较省电的方式是什么;(也就是进程保活)
Android 进程拉活包括两个层面:
A. 提供进程优先级,降低进程被杀死的概率
B. 在进程被杀死后,进行拉活