关于android框架搭建个人的一些认识

1:首先分析开发需求,清楚其中的操作流程;

2:分析其中涉及到的知识点,并确定需要采用什么样的方式来实现,其中一些难点需要非常注意;

3:ui框架的实现:

如果有ui图,就可以直接照做,没有的话,可以采用最普遍的方式:底部控件导航,viewpager+listview来实现(这个是最基本的了,如果需要设计更为复杂的方式的话,就可以按照这种方式去改进);

4:代码的实现:

(1)为所有的activity写一个基类(baseactivity)其中可以采用标题栏共用,内容栏被采用View.inflate(this, layoutResID, mContentLayout)方式动态添加(此方法在调用setcontentview中作操作:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initViews();
}

private void initViews() {
super.setContentView(R.layout.activity_abstract_title);
mTitleTextView = (TextView) findViewById(R.id.text_title);
mContentLayout = (FrameLayout) findViewById(R.id.layout_content);
mLeftBackwardbButton = (ImageButton) findViewById(R.id.button_backward);
mRightImg = (ImageView) findViewById(R.id.img_forward);
mLeftBackwardbButton.setOnClickListener(new MyOnclick());
mRightImg_blue=(ImageView)findViewById(R.id.img_blue);
mRightImg.setOnClickListener(new MyOnclick());
mRightImg_blue.setOnClickListener(new MyOnclick());
addActivity();
}

@Override
public void setContentView(int layoutResID){
mContentLayout.removeAllViews();
View.inflate(this, layoutResID, mContentLayout);
onContentChanged();
}

此基类达到了标题栏共用,可以管理activity的添加状态,同时又很多需要共用的方法可以在里面进行实现(通过实现接口的形式)

(2)网络交互采用的方式:

现在的网络框架很多,大部分都很好用,所以在此基础上还是建议大家采用框架去实现网络访问(如果自己去手写代码实现的话,比较繁琐,而且容易出现错误),现在我一般是用的xutils 3.0访问网络请求返回结果,然后用gson对json数据进行解析,然后放入一个实体类中去得到数据的,如果觉得框架中请求还加了多个回调方法,写起来比较繁琐的话,可以对其进行再次封装,按自己要求去实现吧。

(3)数据的保存方式:

一般是本地和网络各保存一份,每次进去的时候获取本地的,如果本地的被干掉之后,就请求网络,如果网络没有,可以再次进行添加,或者弹出提示,对于用户名,密码之类的数据可以选择sharepreference来保存,另外其他的信息选择sqlite进行保存(采用框架来实现比较方便,不必自己写)。

(4)  数据的封装:

对数据库封装一个类进行管理(也许不只一个,这里只是说下便于管理的方式)

对对话框封装一个类进行管理(*)

对网络请求封装一个类进行管理

对文件下载分装一个类进行管理

(5)按需求分析采用不同的架构(例如MVP),不同的设计模式(单例,构造者,桥接,观察着,工厂等等,由于本人对设计模式也不是太清楚,所以这里也不做介绍了),设计所需要的接口或者抽象类来使代码的可扩展性,重用性提升。

(6)需要注意的事项:

注意静态类,属性,方法的使用,如果acticity啥的在被关闭之后还有静态属性拥有它的引用,这样就有可能造成泄露,另外还有一些流没有关闭,或者广播动态注册缺未关闭,也会出现这种情况;然后就是说到优化了,在我们对listview加载数据时候,数据的获取最好是先获取好了再在getview方法中进行加载,不要直接在getview中作复杂而耗时的操作,这样会出现ui卡顿的现象,另外listview中最好设置settag方式来保存view,当listview加载图片时候,就要考虑到内存溢出的情况了,当需要这样实现的时候,可以采用框架的方式来加载最好,因为里面有做很多的优化,比如采用如引用啥的,实现起来很方便,这里就不多说了。

(7)题外话:

一个程序员的思想就是要敢去想,敢去做,当你把一件事情加上自己特有的属性并能够实现的时候,那自然而然的你就是所说的大牛,让我们奋力拼搏吧!

おすすめ

転載: blog.csdn.net/daxiangzaici/article/details/52251013