MVP
https://zhuanlan.zhihu.com/p/29399606
mvp作用分层、复用
分层:将项目代码分层,抽取为模型(M,提供数据)、视图(V,显示数据)、业务逻辑(P,处理数据)。M和V不直接通信,它们之间的通信是通过P 来进行的
复用:主要是M和P层的复用,不用担心UI的频繁修改了
1>V层中实例P层对像
2>将V层实例对象传入到P层
3>V层可以通过P层对象调用P层中的方法, P层中方法 进行完业务逻辑可以通过V层对象 回调给V层
4>P层为了能回调给V层,V层要通过接口的方式 定义回调方法
5>P层中实例M层对象可以获取网络、本地数据 网络数据是异步获取成功 M层通过P层实例对象回调给P
如何提高后台进程存活率
https://zhuanlan.zhihu.com/p/27652674
应用进程的优先级 :前台进程>可见进程>服务进程>后台进程>空进程
1>网络连接
通过长连接心跳和进程保持通信 比如socket长连接
2>利用系统现有机制
一般可以利用注册系统消息(AlarmReceiver,RootReceiver等),通过系统消息响应挂起进程。
3>利用SyncAdapter
利用Android系统提供的账号同步机制SyncAdapter,实现进程优先级提高。SyncAdapter是一个系统服务,通过系统的定时器更新应用程序数据ContentProvider,因为Sync服务工作在独立进程,并且由操作系统调度,进程属于核心进程级别,系统不会杀掉,而使用了SyncAdapter的进程优先级本身也会提高,从而降低应用进程被杀的概率
4>降低应用内存开销
内存泄漏和内存溢出
内存泄漏是因为持有对象长期引用,导致对象无法被 GC 回收。
为了避免这种情况,可以选择在对象生命周期结束的时候,解除绑定,将引用置为空,或者使用弱引用。
1>单例模式导致内存泄露
传入的context为act,但单例的生命周期是app
2>非静态内部类、匿名内部类导致内存泄露 它们会隐式的持有外部类的引