一、基本概念

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中创建新对象。

    未完待续