Android为什么要创建Activity基类以及Activity基类中一般有哪些方法
推荐于2016-11-28 · 知道合伙人数码行家
知道合伙人数码行家
向TA提问 私信TA
首先,在现在的项目中使用的主要是afinal框架,而且这个框架确实比较不错,省去了不少工作量,在编写Activity的过程中,基本都是直接继承自FinalActivity类,这样可以使用这个类给我们封装好的不少的方法,但是随着项目慢慢推进,这种直接继承框架类的一些缺点也开始慢慢的显现出来。最主要的就是扩展性受到了一些限制,比如对于Activity,我们一般进行控件的初始化操作,为了使代码风格更加的简介明了,我一般都是在一个单独的initView()方法中实现对控件的初始化,然后在onCreate中直接调用这个方法实现控件的初始化。除此之外,在很多的涉及到网络连接的Activity中需要对网络情况进行检测,如果网络状况出现问题,就弹出一个对话框提醒用户进行网络的设置或者是检查。像是这种的需求,我们最好能抽成单独的方法,这样我们就不需要在每个Activity中都写大量的代码进行设置。但是由于我们是直接集成自FinalActivity,所以一个实现方案就是直接修改我们的FinalActivity的源代码,增加这些公共的方法,但是这样就修改了外部框架的源代码,增加了代码之间的耦合度,当我们在另外的项目中需要使用这个框架的时候,就需要再改源代码,所以说这样的方式可以解决问题,但并不是最好的解决方案。
另外一种解决方案就是我们另外写一个Activity的基类BaseActivity,这个类也是继承自FinalActivity,而且在这个基类里面我们可以实现一些公共的方法,这样其他的Activity继承自我们这个BaseActivity基类,既可以使用FinalActivity里面封装好的方法,也可以使用我们在BaseActivity里面扩展的一些公共的方法。如果我们再抽象一层的话,我们可以把这些公共的方法抽象到一个接口里面,然后我们的BaseActivity实现这个接口,这样也可以实现程序的扩展。
下面贴一些我整理的一些代码
首先是抽象出来的一个Activity的接口
在我们定义的Activity中就可以这样使用
view sourceprint?
01./**
02.*
03.* @Package com.example.myallutils
04.*
05.* TODO
06.* @author ZhaoKaiQiang
07.*
08.* @time 2014年5月6日
09.*/
10.public class MainActivity extends BaseActivity {
11.
12.@Override
13.protected void onCreate(Bundle savedInstanceState) {
14.super.onCreate(savedInstanceState);
15.setContentView(R.layout.activity_main);
16.iniView();
17.}
18.
19.@Override
20.void iniView() {
21.mContext = this;
22.validateInternet();
23.PushNotification(R.drawable.ic_launcher, "测试", "内容测试", OtherActivity.class,
24."嘻嘻");
25.}
26.
27.}
经过几层抽象,我们可以看到,代码的扩展性和耦合性确实得到了一定的改善,这篇文章只针对菜鸟,如果有牛人有幸可以看到这篇文章,还希望可以指教一二!