在书上看到如何一键退出所有的Activity

Android的四种启动模式,都不可避免的出现跳转Activity,一旦跳的次数过多,返回时只能一层一层的放回如果有需要一键退出的时候,会比较麻烦,下面这种方法,可以做到一键退出所有的Activity.

-----------------------------------这不是本人写的,是在书上看到的,不要见怪啊哈哈

首先需要定义一个活动管理类来管理我们的活动(Activity)
然后在类中创建三个方法分别用来添加Activity、删除Activivty、遍历Activity;
目的是为了在加载过多的Activity中,寻求一键退出;
下面是我的BaseAcrivity(这里是封装的Activity,然后其他Activity继承BaseActivity就可以了。也可以不封装,只要是为了让添加Activity的方法在onCreate()方法里执行);
public abstract class BaseActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        inlnCreate();
        inlnID();
        inlnDate();
        //把Activity添加到活动管理类中
        ActivityCollector.addActivity(this);
    }

    //重写Activity销毁的生命周期,让Activity活动管理类进行删除
    @Override
    protected void onDestroy() {
        super.onDestroy();
        //把所得到的Activity从活动管理类中进行删除也可以说是销毁
        ActivityCollector.removeActivity(this);
    }

    /**
     * 加载布局的抽象方法块
     */
    public abstract void inlnCreate();

    /**
     * 获取ID的抽象方法块
     */
    public abstract void inlnID();

    /**
     * 书写逻辑代码的抽象方法块
     */
    public abstract void inlnDate();

    /**
     * shortToast方法
     * @param context
     * @param text
     */
    public static void showShortToast(Context context, Object text){
        Toast.makeText(context, text+"", Toast.LENGTH_SHORT).show();
    }

    /**
     * LongToast方法
     * @param context
     * @param text
     */
    public static void showLongToast(Context context,Object text){
        Toast.makeText(context, text+"", Toast.LENGTH_LONG).show();
    }
}
下面是我的活动管理类

package com.myapp.utils;
import android.app.Activity;
import java.util.ArrayList;
import java.util.List;
//创建一个活动管理类,顾名思义,它的作用是用来管理各种活动(Activity)的
public class ActivityCollector {
    public static List<Activity> activityies = new ArrayList<>();
    //在集合中添加一个Activity
    public static void addActivity(Activity activity){
        activityies.add(activity);
    }
    //删除一个Activity
    public static void removeActivity(Activity activity){
        activityies.remove(activity);
    }
    //遍历Activity
    public static void finishAll(){
        for (Activity activity : activityies){
            if(!activity.isFinishing()){
                activity.finish();
            }
        }
        activityies.clear();
    }
}
其他Activity继承此Activity无需在写onCreate方法重新三个抽象方法,进行视图与逻辑分离;它可以使所调用的Activity都封装进活动管理类中最后只需在退出的点击事件里调用finishAll()方法就可以做到一键退出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值