由于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();
}
};
好了,总算是退出了,本来之前是解决了这个问题的,莫名其妙的又出现了
本文介绍了一种通过Activity管理类实现的App退出机制,并探讨了在特定场景下使用广播解决退出问题的方法。
1163

被折叠的 条评论
为什么被折叠?



