自定义AppManager,在需要调用的地方实例化调用。
代码如下:
/**********************************************
* @类名: AppManager
*
* @描述: 应用程序Activity管理类:用于Activity管理和应用程序退出
*
* @作者: DCL
*
* @创建日期: 2015-10-16
*
* @版本: V1.0
*
* @修订历史:
*
***********************************************/
public class AppManager {
private static Stack<Activity> activityStack;
private static AppManager instance;
private AppManager(){}
/**
* 单一实例
*/
public static AppManager getAppManager(){
if(instance==null){
instance=new AppManager();
}
return instance;
}
/**
* 添加Activity到堆栈
*/
public void addActivity(Activity activity){
if(activityStack==null){
activityStack=new Stack<Activity>();
}
activityStack.add(activity);
}
/**
* 获取当前Activity(堆栈中最后一个压入的)
*/
public Activity currentActivity(){
Activity activity=activityStack.lastElement();
return activity;
}
/**
* 结束当前Activity(堆栈中最后一个压入的)
*/
public void finishActivity(){
Activity activity=activityStack.lastElement();
finishActivity(activity);
}
/**
* 结束指定的Activity
*/
public void finishActivity(Activity activity){
if(activity!=null){
activityStack.remove(activity);
activity.finish();
activity=null;
}
}
/**
* 结束指定类名的Activity
*/
public void finishActivity(Class<?> cls){
if (null!=cls) {
for (Activity activity : activityStack) {
if(activity.getClass().equals(cls) ){
finishActivity(activity);
}
}
}
}
/**
* 结束所有Activity
*/
public void finishAllActivity(){
for (int i = 0, size = activityStack.size(); i < size; i++){
if (null != activityStack.get(i)){
activityStack.get(i).finish();
}
}
activityStack.clear();
}
/**
* 退出应用程序
*/
public void AppExit(Context context) {
try {
finishAllActivity();
ActivityManager activityMgr= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
activityMgr.restartPackage(context.getPackageName());
System.exit(0);
android.os.Process.killProcess(android.os.Process.myPid());
} catch (Exception e) { }
}
}
其中,对于Activity的管理统用也可以借助集合,将activity加入到集合中,定义addActivity,removeActivity,removeAllActivity等方法。移除全部进行高级For循环遍历集合,逐个移除。在一键退出程序记得调用System.exit();方法。
以上是开发项目时的一些心得,仅供参考。