一、基本概念
1、使用设计模式
在项目开发中,总会设计一些框架设计、模块设计,如果能理解并很好的运用设计模式,将会使框架和模块稳定很多,毕竟这些设计模式都是经过实验总结出来的。
2.统一规范
- 在开发过程中,需求、设计和编码的一致性;
- 整个程序具有统一的风格,比如主题、色调、对话框样式、按钮样式、控件点击样式、自定义的吐司样式、进度条样式等。
- 整个程序具有统一的结构,比如不同的模块访问网络,他们的调用方式一致,例如异步访问都用回调的方式通知结果,相同的功能应该提取成共同的模块。
- 开发人员能很好的执行需求人员和设计人员你的意图。
- 有完整的需求文档、设计文档、测试文档、处理流程的文档等。
- 技术人员(SE/SL)必须严格执行项目的需求、设计,必须深入到编码细节。
- 设计人员、开发人员之间要保持持续的沟通,并根据情况提出改进意见。
二、设计之前的准备工作
1.共通类的设计
①Widget的设计
比如TextView、EditText、Button、TitleBar、ToolBar等。
目的:
- 统一字体样式,比如:app字体不随系统字体变化而变化。
- 统一UI式样,比如所有的Button控件具有相同的背景和selector。
- 复用代码。
②Adapter Items - 根据式样,提取需要在AdapterView中显示的Item。
- 简单的符合布局。
- 自绘制,尽量优化绘制,从而提高滑动性能。
③Dialog - 自定义对话框的风格样式,真个app使用统一的对话框风格样式。
……
2.缓存设计 - 把内存占用量大的对象存放在缓存中,比如bitmap。图片加载多的时候,使用多级缓存机制,如Volley加载图片,默认使用L2缓存机制。
3.线程管理
①无消息循环的线程。昨晚一件事就结束,发生频率不高,不需要复用线程。在使用线程的时候,最好给线程加上名字,方便跟踪。
new Thread(null, new Runnable() {
public void run() {
// Do you works.
}
}, "Thread_name_request_image").start();
②有消息循环的线程
这样的线程有消息循环,当消息队列中没有消息时,这个线程就会被挂起。当我们需要做某一件事时,只需要给它发送一个消息就可以。这种情况通常是为了复用线程,不用频繁创建线程。我们通常还需要创建一个与这个线程的消息循环(Looper)相关的Handler,用来处理消息。注意,这做的事都是运行在后台线程的。
三、程序框架的设计
1.Android程序的结构
- UI层:
- 数据展示与管理;用户交互;绘制;Adapter
- 业务逻辑层:
持久化数据(内存中,相当于全局数据)
数据加工处理
数据变化的通知机制 - 数据层:
数据访问(数据库、文件、网络、内容提供者、参数配置信息存储)
2.一些基本原则
一些在开发中应当遵循的基本原则:
①提供initialize()方法
在Activity.onCreate或者View的构造方法中调用。
②封装点击事件
把View的点击事件,提成方法,这样在listener处只是一个方法调用者,onXXXClick(View view)
③设计一个BaseActivity类
让所有的Activity都继承自BaseActivity类。在该类中定义共通属性,显示共通对话框,取得topactivity,手动管理启动的activity
④设计application类
保存一些全局数据,或者配置一些全局参数。
⑤异常处理
某些情况,可以考虑使用自定义的异常类。
⑥标注的使用,对于重写的方法,一定加上@Override。不使用的方法可以标记为@Deprecated,这个做法在维护型项目中特别有用。
⑦注册和反注册
广播或者服务,注册后,适时反注册。
⑧封装一些逻辑操作
把对Bitmap、文件加载、网络加载、算法逻辑等封装起来,可以对其集中优化。
⑨绘制处理
一定不要在OnDraw、onTouchEvent中创建新对象。
…
未完待续