【Android】退出多个Activity方法(三)

    之前介绍了两个退出多个Activity的方法了。链接在下面:
    方法一:setFlags()方法
    方法二:setResult()方法
    接下来介绍第三种方法——自定义的一个类去管理打开的Activity。废话不多说直接上代码,如下:

public class MyApplication extends Application {
    private static Context myApplication;
    public static ArrayList<Activity> activities;
    @Override
    public void onCreate() {
        super.onCreate();
        myApplication = getApplicationContext();
    }
    /**
     * 添加Activity
     */
    public static void addActivity(Activity activity) {
        if (activities == null) {
            activities = new ArrayList<Activity>();
        }
        activities.add(activity);
    }
    /**
     * 删除集合中指定的Activity
     */
    public static void removeActivity(Activity activity) {
        activities.remove(activity);
    }
    /**
     * 关闭所有的Activity,并清空集合
     */
    public static void finishAllActivity() {
        for (Activity activity : activities) {
            if (!activity.isFinishing()) {
                activity.finish();
            }
        }
        activities.clear();
    }

    public static Context getContext() {
        return myApplication;
    }
}

    自定义一个MyApplication类,其中实现的方法是:addActivity、removeActivity和finishAllActivity。


    还是和之前一样有五个Activity,分别是BaseActivity、A、B、C和D,其中BaseActivity作为基类Activity,让其余四个Activity继承于它。BaseActivity和其余四个Activity代码如下:

/**
 *BaseActivity实现代码
 */
public class BaseActivity extends AppCompatActivity {
    private static final String TAG = "BaseActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, getClass().getSimpleName());//打印出相应的Activity名称
        MyApplication.addActivity(this);//将Activity添加到集合中
    }
}
/**
 *A实现代码,其余类似
 */
 public class A extends BaseActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.a_layout);

        Button btnA = (Button) findViewById(R.id.btn_a);
        btnA.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(A.this, B.class));
            }
        });
    }
}

    最后,在想要完全退出的地方,使用如下代码:

MyApplication.finishAllActivity();

方法步骤总结:
  1. 自定义一个类,用于管理打开的Activity,在类中定义一个集合用于存储打开的Activity,接下来实现添加Activity(list.add(Activity activity))、删除集合中指定的Activity(list.remove(Activity activity))和关闭所有Activity并清空集合(遍历整个集合,使用finish()关闭Activity,list.clear()清空集合)。
  2. 定义一个基类Activity,其他Activity继承于它。基类Activity中使用
    自定义类名.addActivity(this);实现添加Activity到集合中。
  3. 退出时使用:自定义类名.finishAllActivity();实现退出多个Activity。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值