Android开发学习笔记(1)

Android开发学习笔记(1)

设计与开发

模式

  1. “all-in-one”
    单一app,内部进行分层设计和横向模块划分。例如微信
  2. 组合app
    例如:Facebook+Messenger
  3. 单一app形式,但内部模块独立开发编译发布
    例如:手机淘宝客户端,手机管家

插件化开发下的开发质量管理

  • 自动代码生成
    • 应用:网络协议、存储对象模型
    • 缺点:代码生成量大
  • 动态注解机制
    • 应用:界面控件、存储对象模型
    • 缺点:会使用反射相关的内容,导致性能缺失
  • 持续集成系统
    • Jenkins+Plugins
  • 静态代码扫描
    • CheckStyle
    • Findbugs
    • Android Lint
  • 单元测试
    • 逻辑层为主
  • 稳定性监控
    • Crash、ANR监控

资源管理

设计模式MVC

  • 全称:Model-View-Controller
  • 数据存储、逻辑控制、试图展现分离

资源定义

  • 从代码中分离
  • 用于UI呈现
  • 静态内容

资源的组织形式

  • assets/:原始资源,任意格式与任意组织方式
  • res/:系统化资源,系统统一组织和管理
  • res/下九种类型资源文件
目录资源类型
anim/属性动画;补间动画
color/颜色状态selector
drawable/Bitmap或XML Drawable files
layout/UI布局
menu/应用菜单
values/常量(字符串、数组等)定义
xml/XML属性配置
raw/原始格式文件(音、视频)

资源适配

资源编译

  • 索引方式提高读取速度
  • 编译成二进制提高解析速度
  • 减少资源大小
  • 编译后
    1. assets不动
    2. res下values消失
    3. 除raw外xml编译成二进制文件
    4. 新增resources.arsc

资源访问


UI

UI渲染

  • UI渲染是单线程的
  • 消息循环机制(UI事件、定时器、网络通信触发消息)
  • UI消息 -> ViewRoot -> DecorView -> 启动渲染
  • Measure, Layout, Draw 皆递归计算父、子view
  • skia图形库

UI性能优化

  • 减少主线程内容
    1. 避免过度绘制
      • Overdraw 过度重绘检查
    2. 减少layout层级
      • layout是递归执行的(见上)
    3. 减少耗时操作
      • 减少I/O
      • 一定不要做网络操作(注意实在主线程下)
      • 不要同时做过多UI布局计算
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值