Android开发经验

个人在开发过程中的一些经验结合网络上部分博主的经验总结
参考资料:

http://www.jianshu.com/p/4f152bc8f4f3

一、命名规范

(一)包命名

  • 根据项目功能模块(如微信中found、me等)
  • 根据Android模块(不是指程序功能,而是指UI,http,bean这些功能)
  • 两者结合,如下♂
    com.mesada.demo
    |-activity
    | |-user
    | |-login
    |-fragment
    | |–user
    | |–login

参考博文:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2016/0612/4347.html

(二)类命名

例如
ActivityWelcomeActivity、LoginActivity
FragmentFoundFragment、MeFragment
ServiceTimeService
BroadcastReceiveWifiBroadcast

(三)变量命名

采用小驼峰方式
命名模式为:逻辑名称+view缩写

  • 全局变量
    例如:mLoginBtn、mRecordRly

  • 局部变量,不加m

(四)layout布局文件

命名模式为:activity_功能模块.xml
例如:activity_main.xml

(五)layout中的id命名

命名模式为:view缩写_模块名称_view的逻辑名称
例如:android:+id = @id/btn_loginactivity_login

参考资料:http://blog.youkuaiyun.com/vipzjyno1/article/details/23542617

二、应用架构

MVC—>MVP
MVC模式缺点:activity作为Control层耦合过多逻辑、数据处理代码

MVP模式优点:activity作为View层,专注界面交互;方便单元测试,方便协同开发
MVP模式缺点:接口文件过多

详细内容请移步:
http://blog.youkuaiyun.com/lmj623565791/article/details/46596109#comments

三、选好第三方框架

  • 网络访问:okhttp、retrofit、android-async-http、volley
  • 图片下载:Android-Universal-Image-Loader、Glide、Fresco、Picasso
  • 缓存框架:DiskLruCache、Robospice、ACache
  • Json解析框架:Gson、Fastjson、Jackson
  • 事件总线:EventBus、Rxjava
  • 二维码:zXing

  • 第三方分享:友盟分享

  • 数据统计:友盟统计
  • 地图:百度地图、高德地图
  • 推送:百度推送、极光推送
  • 及时通信IM:环信、融云

四、抽象依赖第三方框架

选择好了框架千万不要拿来就用,因为再好的框架也有它局限的地方,当然你也可以简单的在遇到这个框架不能实现的时候,添加另外一种框架,只是这样项目会越来越大,对于APP来说APK也越来越大,65535 的问题也会提前出现,所以为了方便以后有可能出现的切换框架,以及防止初期对框架使用不熟悉而引发出新的bug,在选择好了框架后,一定要对框架进行二次封装,当然有些框架是不需要二次封装的,比如前面说的单一性的框架Butterknife或PreIOC,但是像UniversalImageLoader、OKHttp等框架,必须要进行二次封装,至于封装原则,则是封装后,调用框架对于调用代码来说是透明的,简单来说,就是对于框架调用都通过一个统一的入口进入,并且调用时,不需要传入任何跟框架相关的东西,如果必须要传入接口,可以通过继承框架来实现新的接口传入,这样在真正的使用框架的地方,没有任何关于框架的引用

封装抽象的好处
之所以要这样封装,最大的好处就是一旦框架不能满足需求时,需要进行框架更换时,只需要换掉框架,同时修改统一入口处的代码,就能快速的替换整个框架,避免强耦合!

五、屏幕适配

content

(一)普通界面适配方案

参考hongyang适配系列博客
包括:
1、weight的使用
2、定义不同分辨率对应的dp-px
3、使用sdk自带的百分比布局
.
.
.

(二)自定义控件及适配

在自定义控件的开发过程中,宽度单位、文字大小都是使用的像素px,那就会出现适配问题!!!

如何解决:
1、控件长宽通过属性设定
2、控件内部画笔图像等长宽基于控件长宽 or 基于屏幕长宽
3、文字大小基于控件长宽 or 基于屏幕长宽

六、项目调试及运行时异常处理

根据我两年填坑经验来看,程序猿的日常工作大部分就是改改改Bug!

(一)锁定Bug

  • 最基本的log调试(不缀叙)
  • eclipse断点调试

(二)运行时异常导致的Bug

运行时异常主要有:

  • NullPointerException(空指针)
  • ClassCastException(类转换异常)
  • IndexOutOfBoundsException(数组越界)

开发中最为常见的当属Null异常!
解决方法:多做空判断、防患于未然、易出异常出try…catch…

可参考:http://www.jianshu.com/p/5b7b8af496ba

七、异步回调及线程通信

耗时操作不应该放在主线程操作,如文件读写、网络操作

(一)handler及Asynctask知识

content

(二)事件总线—EventBus/Rxjava

content

八、内存优化

content

(一)内存泄漏

1)内存泄漏检测
https://github.com/square/leakcanary
2)内存泄漏的原因
handler导致的内存泄漏
内部类导致的内存泄漏

3)如何避免内存泄漏
使用弱引用
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1123/2047.html

(二)内存溢出

内存溢出的原因
bitmap没有压缩、没有释放

bitmap的压缩方法:

九、工具及IDE插件使用

(一)工具

  • 网络抓包工具—Fiddler4

  • 模拟请求—PostMan

  • 校验Json数据合法性—http://www.kjson.com/

  • 通过Json字符串快速转换成实体类Bean

  • 程序猿必备翻墙工具—蓝灯

  • 项目管理—Svn、Git

(二)IDE插件

~~Android Studio实用插件推荐~~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值