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

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

(二)类命名

例如
Activity WelcomeActivity、LoginActivity
Fragment FoundFragment、MeFragment
Service TimeService
BroadcastReceive WifiBroadcast

(三)变量命名

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

  • 全局变量
    例如:mLoginBtn、mRecordRly

  • 局部变量,不加m

(四)layout布局文件

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

(五)layout中的id命名

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

参考资料:http://blog.csdn.net/vipzjyno1/article/details/23542617

二、应用架构

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

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

详细内容请移步:
http://blog.csdn.net/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实用插件推荐~~

Android开发经验相关推荐

  1. Android开发经验实战总结

    以前一直想写一篇总结 Android 开发经验的文章,估计当时的我还达不到某种水平,所以思路跟不上,下笔又捉襟见肘.近日,思路较为明朗,于是重新操起键盘开始码字一番.先声明一下哈,本人不是大厂的程序猿 ...

  2. Android开发经验、能力提升

    原文出处:http://liuqingwen.me/blog/2017/08/14/translation-of-30-bite-sized-pro-tips-to-become-a-better-a ...

  3. 【Android开发经验】android:windowSoftInputMode属性具体解释

    本文章来自CSDN博客:http://blog.csdn.net/zhaokaiqiang1992.转载请注明地址! 在前面的一篇文章中,简单的介绍了一下怎样实现软键盘不自己主动弹出,使用的方法是设置 ...

  4. Android开发经验之在图片上随意点击移动文字

    只要在图片范围之内,文字可随意点击移动. [java] view plaincopy package xiaosi.GetTextImage; import android.content.Conte ...

  5. 推测用户行为 程序员分享Android开发经验

    从G1上市到现在,市面上已经出现了至少30款Android手机.为什么至今依然有一些用户在抱怨Android不好用,在相关的开发中,什么才是真正值得关注的,开发的核心是什么?为什么移动应用需要格外关注 ...

  6. 【Android开发经验】Android移动UI设计经验总结

    转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 1.Android目前的主流设备分辨率为480×800.720×1280.1080×1920,单位是像素.在 ...

  7. 【Android开发经验】LayoutInflater—— 你可能对它并不了解甚至错误使用

    今天,看到了一篇文章讲LayoutInflater的用法,瞬间感觉自己对这个类确实不够了解,于是简单的看了下LayoutInflater类的源代码,对这个类有了新的认识. 首先,LayoutInfla ...

  8. 盛大资深软件工程师谈Android开发经验

    从G1上市到现在,市面上已经出现了至少30款Android手机.为什么至今依然有一些用户在抱怨Android不好用,在相关的开发中,什么才是真正值得关注的,开发的核心是什么?为什么移动应用需要格外关注 ...

  9. mmkv跨进程,Android开发经验的有效总结,系列篇

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YDtXigXj-1618552640457)(//upload-images.jianshu.io/upload_ima ...

最新文章

  1. Oracle数据库备份与恢复的三种方法
  2. oracle+手工创建pfile,oracle 手工创建数据库
  3. 假设磁盘块与缓冲区大小相同,每个盘块读入缓冲区的时间为10μs,由缓冲区送至用户区的时间是5μs,系统对每个磁盘块数据的处理时间为2μs。若用户需要将大小为10个磁盘块的
  4. 矩阵乘法如何去逆矩阵_矩阵乘法和求逆
  5. mysql 触发器 for each row 理解_“for each row”如何在mysql中的触发器中工作?
  6. Java 按行读写文件(解决中文乱码)
  7. 如何去掉 Visual Studio源代码 出现 对齐的点点
  8. pandaboard 安装_pandaboard ES学习之旅——3 Uboot源码下载与编译
  9. 做科普自媒体是怎么挣钱的?
  10. 一种基于主板BIOS的身份认证方案及实现
  11. 用计算机绘制二项分布概率图,二项分布和泊松分布实验.doc
  12. hualinux 编程概念 3.15:天下武功,唯快不破—新时代敏捷项目管理之道
  13. 阿里云存储OSS之九大使用技巧
  14. 亚控科技的KingSCADA多个漏洞
  15. Linux系统学习方法论 1
  16. App推广统计代替渠道包统计的方法
  17. sp01事务码_修复了Server 2003 SP2上的“新事务无法在指定事务协调器中登记”
  18. android仿美团评论
  19. Web端编写(四)——查看会议议程
  20. Java程序设计基础【2】

热门文章

  1. 企业从哪里开始构建弹性 IT 基础架构
  2. pandas并发处理数据神器Pandarallel的实战代码
  3. Topic 14. 临床预测模型之校准曲线 (Calibration curve)
  4. python矩阵点乘和叉乘_NumPy点积:取向量积的乘积(而不是求和)
  5. ios阴阳是不显示服务器,阴阳师IOS登录异常怎么办 苹果不能正常登录解决办法...
  6. 联想小新22H2版跳过联网方法最新方法
  7. 大数据时代 微软被迫接受开源
  8. php 保持内容换行符,PHP 将内容写入word pdf 换行符不生效咋办
  9. 【C++】算法STL库
  10. arcmap给tif添加地理坐标_如何将JPG格式的图片转化为带地理坐标的TIFF格式