
60条Android开发实践总结。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
Android开发注意事项与经验总结在Android App开发过程中,我们总结了60条技术经验注意事项,以下是详细的知识点总结:1. 统一风格和处理公共事件:使用BaseActivity来继承所有Activity,构建对话框统一构建器,方便统一风格和处理公共事件。2. 数据库表段字段常量和SQL逻辑分离:使用Lite系列框架LiteOrm库,数据库表段字段常量和SQL逻辑分离,清晰且重心可以放在业务上不用关心数据库细节。3. 全局变量管理:将全局变量放全局类中,模块私有放自己的管理类中,常量清晰且集中。4. 单一职责原则:不要相信庞大的管理类的东西会带来什么好处,可能是一场灾难,而要时刻注意单一职责原则,一个类专心做好一件事情更为清晰。5. 延迟初始化:如果数据没有必要加载,数据请务必延迟初始化,谨记为用户节省内存,总不会有坏处。6. 异常处理:异常抛出,在合适的位置处理或者集中处理,不要搞的到处是catch,混乱且性能低,尽量不要在循环体中捕获异常,以提升性能。7. 内存泄漏注意:地址引用链长时小心内存泄漏,和警惕堆栈地址指向,典型的易发事件是:数据更新了,ListView视图却没有刷新,这时Adapter很可能指向并不是你更新的数据容器地址(一般为List)。8. 信息同步:不管是数据库还是网网络操作,新插入的数据注意返回ID(如果没有赋予唯一ID),否则相当于没有同步。9. 多线程操作数据库:db关闭了会报错,也很可能出现互锁的问题,推荐使用事务,推荐使用自动化的LiteOrm库操作。10. 结构、架构分析:做之前先考虑那些可以公用,资源,layout,类,做一个结构、架构分析以加快开发,提升代码可复用度。11. 有序队列操作:add、delete操作时注意保持排序,否则你会比较难堪喔。12. 数据库删除数据时:要注意级联操作避免出现永远删不掉的脏数据喔。13. 形参实参:调用函数时参数为基本类型传的是值,即传值;参数为对象传递的是引用,即传址。14. ListView操作:在数据未满一屏时,setSelection函数不起作用;ListView批量操作时各子项和视图正确对应,可见即所选。15. 代码量控制:控制Activity的代码量,保持主要逻辑清晰。其他类遵守SRP(单一职能),ISP(接口隔离)原则。16. ArrayList操作:arraylist执行remove时注意移除int和Integer的区别。17. Log打印:Log请打上Tag,调试打印一定要做标记,能定位打印位置,否则尴尬是:不知道是哪里在打印。18. 代码复用:码块/常量/资源可以集中公用,一定共用,即使共用逻辑稍复杂一点也会值得,修改起来很轻松,修改一种,到处有效。19. ListView操作:setSelection不起作用,尝试smoothScrollToPosition。ListView的LastVisiblePosition(最后一个可见子项)会随着getView方法执行位置不同变动而变。20. 通讯机制:与Activity通讯使用Handler更方便; 如果你的框架回调链变长,考虑监听者模式简化回调。21. 监听者模式:监听者模式不方便使用时,推荐EventBus框架库,使用时间总线,没接触过的同学可以自行脑补一下哦。22. Handler使用:Handler在子线程线程使用Looper.prepare,或者new的时候给构造函数传入MainLooper来确保在主线程run。23. TimePicker操作:timepicker 点击确定后需要clearFocus才能获取手动输入的时间。24. 构造函数极度不推荐:启动异步线程,会埋下隐患。比如:异步线程调用了本例的示例,就会悲剧等着崩溃吧。25. 容错处理:千万不要理所当然的以为一个对象不会为空,充分的做好容错处理;另外注意null也可以插入ArrayList等容器中。26. ExpandableListView操作:ExpandableListView的子列表不能点击(禁用)要把Adapter的isChildSelectable方法返回true。27. UI显示:UI显示注意内容过长的情形要提前使用ScrollView否则在小手机上尴尬你懂得。28. 按钮和输入框设计:注意按钮的感应范围不小于9mm否则不易点击;输入框注意光标的位置更易用户输入。29. 服务器和客户端标识:服务器和客户端尽量统一唯一标识(有可能是ID),否则多少会有歧义和问题。30. 注释:注释,尽量去写足够的注释,去描述一下思路,达到看了可以明白某一块代码的效果。31. 数据库优化:完整型数据一定要用Sqlite的Transaction,大数据一定要用。粗略测试插入100个数据有20倍的提速,插入1000个数据就有100多倍的提速。32. 字符串处理:避免String=”null”的情况出现String = null,=””都可以。避免出现title=”无主题”这样的数据提交到数据库浪费空间。33. 数据库操作:存在多个不同的dbhelper实例情况下,sqlitedatabase对象必然存在不同的。
全部评论 (0)


