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()方法就可以做到一键退出。