复习3

1.强引用、弱引用

GC回收机制层级决定,持有强引用的对象,在任何时候都不会被系统回收,可能会导致JVM OOM和内存泄漏。在垃圾回收线程扫描过程中,垃圾回收线程的优先级比较低,持有弱引用的对象不管当前内存是否足够,一旦发现便会被回收,弱引用的对象只拥有短暂的生命周期,和持有软引用的对象不同的是,软引用只有在内存不够时才会被回收。

2.组件化类似SDK化   模块化

组件化:针对于业务组件之间是独立的,没有关联的,在组件模式下可以独立开发,而在集成模式下又可以变为arr包集成到“app壳工程”中,组成一个完整功能的APP。

2.1组件模式和集成模式的切换

2.2组件合并

2.3全局上下文获取和组件数据的初始化

2.4liabrary库依赖问题

2.5组件之间的通信和调用

2.6资源冲突问题

模块化:将模块下的业务细分形成独立的组件,组件之间低耦合或解耦,然后集中服务于这个大模块的需求,实现模块分开来,如携程美团下的首页分类,亲子游、美食、外卖......。其中美食里面划分不同的业务组件。


3.自定义控件

确定好需求,设计属性值和范围,attr.xml文件;

重写构造方法,获取view的属性值,实现基本布局;

重写onMeasure()规划布局的大小,重写onLayout()确定布局的位置;

重写ondraw()绘制轨迹和区域;

添加相应的响应事件

 

4.性能优化

4.1 布局优化  布局是否合理主要影响的是页面测量时间的多少,布局的优化比较重要

减少嵌套层级

复用布局

使用viewstub  不可见、不占位置、资源小

删除无用属性

优化背景颜色,减少过渡绘制层级,自定义View使用 canvas.clipRect()来帮助系统识别那些可见的区域

加载动画延期加载

减少刷新次数

缩小刷新区域

 

4.2 内存优化 

及时关闭销毁回收资源性对象如cursor 、io、bitmap

注销已经注册的对象如广播、eventbus

Handler的内存泄漏  可用弱引用优化

Webview的关闭

类中的静态变量持有大数据对象

优化图片内存

使用优化的数据对象SplasArray、Lrucache

 

4.3耗电优化

避开浮点运算

避免唤醒屏幕使用的不当

 

4.4稳定性优化

使用Crash捕捉异常上传如bugtag

使用LeackCanary监听内存溢出

用系统工具Lint扫描静态代码

重构

 

5.mvp模式的理解和优点

MVP把Activity中的UI逻辑抽象成View接口,把业务逻辑抽象成Presenter接口,Model类还是原来的Model。

实现Model和View的分离。降低了耦合;

把业务逻辑抽到Presenter中去,避免后台线程引用着Activity导致Activity的资源无法被系统回收从而引起内存泄露和OOM;

Activity只处理生命周期的任务,代码变得更加简洁;

方便进行单元测试

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值