Android冒险之旅-8-BaseActivity、ActivityCollector的使用

1.BaseActivity

  创建一个BaseActivity类继承AppCompatActivity类用来写所有活动公共的方法,方便更好的管理活动。当创建其他活动时直接继承BaseActivity。公共方法就比如活动启动时打印类名,这样在阅读别人代码时不至于找不到对应的活动。

/**
 * create by 星航指挥官
 * create on 2020/8/25
 * 我为天帝 当镇压世间一切敌
 * 遮天
 */
public class BaseActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //打印类名,用于判断是哪一个活动启动
        Log.d("BaseActivity",getClass().getSimpleName());
    }

}

2.ActivityCollector

  如果我们想要退出程序,而此时的返回栈里面又不止一个活动,那么我们需要不止一次的点击返回键才能彻底退出,这样的体验并不良好。我们可以创建一个ActivityCollector 类来一键退出所有活动。

/**
 * create by 星航指挥官
 * create on 2020/8/25
 * 我为天帝 当镇压世间一切敌
 * 遮天
 */
public class ActivityCollector {
    //创建活动集合
    public static List<Activity> activities = new ArrayList<>();
    //添加活动
    public static void addActivity(Activity activity){
        activities.add(activity);
    }
    //移除活动
    public static void removeActivity(Activity activity){
        activities.remove(activity);
    }
    //关闭所有活动
    public static void finishAll(){
        for (Activity activity : activities){
            if (!activity.isFinishing()){
                activity.finish();
            }
        }
        activities.clear();
    }
}

  在ActivityCollector 中,我们通过一个List来暂存活动,提供了addActivity()方法向List中添加新活动,remove()方法移除销毁的活动,此外还有finishAll()方法销毁List中的所有活动。
  当然了,要想ActivityCollector 起作用,我们需要在BaseActivity中添加以下代码:

/**
 * create by 星航指挥官
 * create on 2020/8/25
 * 我为天帝 当镇压世间一切敌
 * 遮天
 */
public class BaseActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //打印类名,用于判断是哪一个活动启动
        Log.d("BaseActivity",getClass().getSimpleName());
        //当活动创建时,添加到活动管理器中
        ActivityCollector.addActivity(this);
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        //当活动被销毁时,从活动管理器中移除
        ActivityCollector.removeActivity(this);
    }
}

  BaseActivity中调用了ActivityCollector的addActivity()方法和removeActivity()方法实现了List集合中活动的自动添加和移除,但是想要一键销毁所有活动,我们还需要在合适的地方调用finishAll()方法。比如在"退出程序"按钮的点击事件中调用:

ActivityCollector.finishAll();

kee

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值