android开发 App结束所有activity

来源:互联网 发布:redhat linux忘记密码 编辑:程序博客网 时间:2024/05/16 15:45

由于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();        }    };

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

0 0
原创粉丝点击