安卓基类的书写-参考鸿洋大神

基类Activity

作者写了Android产品研发、源码解析等多个专题,有兴趣可以关注学习。本文为产品研发中的一篇。




1 概述   

在实际的android产品研发中,一般的我们在写Activity的时候都会继承于一个基类Activity,该Activity是所有的Activity的基类。


在该基类中我们主要用于重写一些共有的逻辑。好处是显而易见的对于一些Activity的共有逻辑我们不必要在每个Activity中都重新写一遍,只需要在基类Activity中写一遍就好了。


下面我就讲解一下在产品研发过程中我对基类Activity的设计。


  • (一)基类Activity是如何使用的? 


定义一个BaseActivity,让App中所有的Activity都继承于BaseActivity;


  • (二)基本Activity包含的内容。

下面将逐一介绍推荐的内容。


2 友盟数据统计逻辑   

在BaseActivity的生命周期中复写友盟数据统计方法。 

用过友盟数据统计的同学应该知道,为了统计每个页面的点击事件,页面访问路径,异常信息等我们需要在Activity的生命周期方法中添加友盟的API,这些都是一些相同的逻辑,难道我们需要在每个Activity中都重写这些友盟API么?


答案当然是否定的,友盟官方也不建议我们这么做,我们可以在一个基类Activity的生命周期方法中重写这些友盟API,并让我们需要统计的页面继承于该基类Activity。

@Override
protected void onResume() {
    MobclickAgent.onResume(this);
}
@Override
protected void onPause() {
    MobclickAgent.onPause(this);
}

由于我们需要统计不同的Activity页面的数据,所以我们需要在各个Activity的生命周期中都要重写友盟的API,那么这里我们就完全可以将这种重复性的动作下发到BaseActivity中,而让所有的Activity都继承于BaseActivity,进而我们的Activity就在生命周期方法中重写了友盟的API。


2 保存Activity栈   


因为我们在Activity页面中经常需要使用“this”,但是到处都是用this显得不太好,这时候我们可以在BaseActivity中定义一个Actiivty类型的mContext成员变量并在BaseActivity中的onCreate方法中赋值为this,这样我们在子Activity中需要使用this的地方直接使用mContext成员变量就好了。


并且我们在内存中保存了一个Activity的自定义栈,正常的做法是在Activity的onCreate方法中执行入栈操作,在Activity的onDestory方法中执行出栈操作,由于这些都是共有的逻辑因此我们把这两个操作放到BaseActivity中。


3 EventBus进行注册和反注册   

在生命周期方法中对事件总线框架EventBus进行注册和反注册。


使用过EventBus的同学应该知道其能够实现事件传递的核心机制就是将Activity对象“注册”到EventBus中,但是有注册也必须要有反注册的机制,因为Activity不是常驻内存的,Activity也有销毁的时候,这时候就需要从EventBus中“反注册”,一个比较好的方式就是在Activity声明周期方法中完成



这样我们就不必要单独在Activity中重写EventBus的注册和反注册逻辑了。


4 登录用户票据更新的操作   

在onResume方法中执行更新登录用户票据更新的操作。


在App端保存了用户的token信息,但是这里的token信息不是一直有效的,有效期为30天,所以这里就需要有一个更新token的操作,App现在的更新操作是判断token的有效期是否过了一半,即15天,若过了一半了,则在新打开的Activity时执行更新票据操作,所以这也是共有的逻辑,即在BaseActivity的onResume中执行更新票据的操作。




5 重写加载布局文件的逻辑,统一App页面布局   

在setContentView方法中,重写加载布局文件的逻辑,统一App页面布局、



在BaseActivity中重写了setContentView方法,然后统一布局文件,即让我们调用setContentView传递的layoutId加载到我们自定义的ViewContain中,这样我们就统一了Activity的布局文件,当然了这也是共有的逻辑,我们可以卸载BaseActivity中。


6 执行共有的UI操作   

执行共有的UI操作,比如显示Toast,显示SnakeBar,显示Progress,显示Dialog等。




我们可以在BaseActivity中重写了一些显示Toast,Dialog,SnakeBar的操作,这样我们在Activity中显示这些UI的时候可以统一调用方法与UI风格。


从上面我们分析的基类内容可以知道一般在涉及Activity的时候都需要重写一个基类Activity,用于重写Activity中的共有逻辑,避免我们在每个Activity中都重写相关的重复逻辑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值