android开发 App结束所有activity

本文介绍了一种通过Activity管理类实现的App退出机制,并探讨了在特定场景下使用广播解决退出问题的方法。

由于app是h5写的,用的webView加载,so,activity并不多,我写了一个activity的管理类,

package com.shangyi.ui.activity;

import android.app.Activity;

import java.util.ArrayList;
import java.util.List;

/**
 * class Manager 管理activity,调用ActivityCollector.finishAll();可以在app的任何地方退出
 * Created by Vincent on 2016/7/24.
 */
public class ActivityCollector {

    public static List<Activity>  activities=new ArrayList<Activity>();

    /**
     * 添加activity
     * @param activity
     */
    public static void addActivity(Activity activity){
        activities.add(activity);
    }

    /**
     * 移除某个activity
     * @param activity
     */
    public static void removeActivity(Activity activity){
        activities.remove(activity);
    }

    /**
     * 结束所有的activity
     */
    public static void finishAll(){
        for(Activity activity:activities){
            /*if(!activity.isFinishing()){
                activity.finish();
                android.os.Process.killProcess(android.os.Process.myPid());//杀死当前进程,自杀
            }*/
            activity.finish();
            android.os.Process.killProcess(android.os.Process.myPid());//杀死当前进程,自杀
        }
    }
}

在BaseActivity的onCreate()的方法里面我都会把当前Activity类加入进去,在onDestory方法里面移除,
此方法只有对于继承了BaseActivity基类的Activity才会有用,有一个场景是A(没有继承BaseActivity)–>b(跳转之前要结束栈里面的所有activity)–>c,c退出,退出app,刚开始使用这种方法ActivityCollector .finishAll()退出,结果在C页面退出的时候就返回到A了,各种办法都没管用,后来使用了广播,跳转c页面之前发送广播,在A页面注册广播结束,

A页面onCreate()方法中注册:

IntentFilter intentFilter=new IntentFilter();
        intentFilter.addAction("tuichu");
        registerReceiver(tuichu, intentFilter);

A页面onDestory()方法中解注册:

unregisterReceiver(tuichu);

在A中写一个内部类广播:

 private BroadcastReceiver tuichu=new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
//            ToastUtil.defaultToast(getApplicationContext(),"退出");
            finish();
        }
    };

好了,总算是退出了,本来之前是解决了这个问题的,莫名其妙的又出现了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值