Open iw-cloud opened 8 years ago
1.公用Activity包:这个包其实就是存放一个或多个Activity的基类,它封装的与业务无关的公用逻辑,一般都是用作给Activity定义全新的生命周期用的;我们在里面创建一个BaseActivity来为Activity定义新的生命周期;学习过设计模式的人,都应该清楚单一原则:一个类或方法,就只做一件事;如果Activity的onCreate方法却经常拿来做复数以上的事情,这明显不符合我们的单一原则; 下面的我们按照单一原则修改过的BaseActivity: public abstract class BaseActivity extends Activity {
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
initVariables(); initViews(savedInstanceState); loadData(); }
//初始化变量,包括Intent传递的数据和Activity内的变量 protected abstract void initVariables(); //加载layout布局,初始化控件,为控件挂上事件 protected abstract void initViews(Bundle savedInstanceState); //获取该类需要加载的数据 protected abstract void loadData(); }
然后我们让App业务Activity都继承BaseActivity基类,就可以保证业务逻辑结构清晰,才可以做到项目的低耦合,高内聚,提高项目的运行效率
2.net包,也就是网络处理包:这里一般都是用来封装网络底层的工具类,用于访问网络;比方说目前火热的Android网络库okhttps和Volley,前者是google官方认可的,后者google自己开发的,这两个包通过封装结合在一起的网络工具类是很强力的;App一切和网络的通信处理都是封装在这里
3.Cache(缓存)包:这里存放的都是对缓存数据和图片进行处理的工具类;
4.Widget包:这里用在放各种自定义控件的;有些Android提供的控件不满足我们的业务需求,我们就需要进行自定义了
5.utils包:这里存放各种与业务无关的公用方法,比方说SharePerference的封装
6.db包:SQLite相关的全部逻辑都放在这里,方便管理
7.adapter包:全部适配器都放在这里,供listview,GirdView或RecyclerView使用
8.entity包:全部的实体适配类都放在这里;还可以细分为db用的和解析json用的
9.页面activity包:这里存放各个页面的activity,它们都是BaseActivity的子类 ,实现不同页面的逻辑
10.公用Fragment包: Fragment是依附在Activity上面,是Activity的页面碎片;这个包其实就是存放一个或多个Fragment的基类,它封装的与业务无关的公用逻辑,一般都是用作给Fragment定义全新的生命周期用的;有时候我们也会在这包里创建一个Fragment工厂来方便其它类来复用现有的Fragment
11.页面Fragment包: 这里存放各个页面的Fragment,它们都是BaseFragment的子类 ,实现不同页面的逻辑
12.广播接收者包: 这里存放各种App需要用到的广播接收者类;我们视情况而决定是否在创建自定义广播发送
13.Service包:这里存放各种后台服务
上一段是Fritz的,最好先把架构搭好,之前我们有数据字典的定义,其实就是这个思路。需要从一开始,就想到日后的应用,我一般以10万人的应用场景来思考。去考虑系统的稳健性。 1,数据的准确性 2,数据的长期存在与追踪 3,数据的变更与记录 4,数据的应用场景 5,数据的及时更新 6,不同系统之间的兼容性
这只是简单的文件划分,真正要做开发文档,要把开发需要的Activity,View,Service等类列出并命名,注释功能,而且各按键的listener要处理的函数也要列出......这是一个很繁琐的工作,开发过程中会不停地添加和修改。星期六我已经大致与Fritz谈过,也他也大致明白。
这边作为大问题的log,记录与讨论 @Jim-Cen @Fritz-Xu @Melody-xu 有问题,可以开新的issue,提出自己的想法,close权利,是我跟Jim,还有提出本人,其他人只是参与讨论
@Jim-Cen 这边讨论系统与app的重建工作
discussion on new APP and SYS