新人自我学习用,希望共同学习,共同进步
**
* Created by chen on 2017/8/22.
*/
public class AppManager {
private static Stack<Activity> activityStack;
/*
* 创建单例
* */
private volatile static AppManager instance;
private AppManager(){
}
public static AppManager getAppManager(){
if(instance ==null){
synchronized (AppManager.class){
if(instance == null){
instance = new AppManager();
instance.activityStack =new Stack();
}
}
}
return instance;
}
/*
添加activity到栈
* */
public void addActivity(Activity activity){
if(activityStack == null){
activityStack = new Stack<Activity>();
}
activityStack.add(activity);
}
/*
* 获取当前activity(栈中最后一个压入的)
* */
public Activity currentActivity(){
try {
Activity activity = activityStack.lastElement();
return activity;
}catch (Exception e){
return null;
}
}
/*
* 获取当前Activity的前一个Activity
* */
public Activity preActivity(){
int index = activityStack.size()-2;
if(index < 0){
return null;
}
Activity activity = activityStack.get(index);
return activity;
}
/*
* 结束当前Activity(把栈中最后一个压入的)
* */
public void finishActivity() {
Activity activity = activityStack.lastElement();
finishActivity(activity);
}
/*
* 结束指定的Activity
* */
private void finishActivity(Activity activity) {
if(activity != null){
activityStack.remove(activity);
activity.finish();
activity = null;
}
}
/*
* 移除指定的Activity
* */
public void removeActivity(Activity activity){
if (activity !=null){
activityStack.remove(activity);
activity = null;
}
}
/*
* 结束指定类名的activity
* */
public void finishActivity(Class<?> cls){
try {
for (Activity activity:activityStack){
if (activity.getClass().equals(cls)){
finishActivity(activity);
}
}
}catch (Exception e){
e.printStackTrace();
}
}
/*
* 结束所有Activity
* */
public void finshAllActivity(){
for(int i=0,size = activityStack.size();i<size;i++){
if (null != activityStack.get(i)){
activityStack.get(i).finish();
}
}
activityStack.clear();
}
/**
* 返回指定的Acticity
* @param cls
*/
public void returnToActivity(Class<?> cls){
while (activityStack.size() != 0)
if (activityStack.peek().getClass() == cls){
break;
}else {
finishActivity(activityStack.peek());
}
}
/**
* 是否已经打开指定的Activity
* @param cls
* @return
*/
public boolean isOpenActivity(Class<?> cls){
if (activityStack != null){
for (int i=0,size = activityStack.size();i<size;i++){
if (cls == activityStack.peek().getClass()){
return true;
}
}
}
return false;
}
/**
* 退出应用程序
* @param context
* @param isBackground 是否开启后台运行
*/
public void AppExit(Context context,Boolean isBackground){
try {
finshAllActivity();
ActivityManager activityMgr = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
activityMgr.restartPackage(context.getPackageName());
}catch (Exception e){
}finally {
//如果有后台程序运行,请不要支持此句
if (!isBackground){
System.exit(0);
}
}
}
}