package com.yunpai.tms.application;

import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context; import com.yunpai.tms.R;
import com.yunpai.tms.activity.LoginActivity;
import com.yunpai.tms.activity.MainActivity; import java.util.Stack; public class AppStackManager {
// Activity栈
private static Stack<Activity> activityStack;
// 单例模式
private static AppStackManager instance; /**
* 单一实例
*/
public static AppStackManager getInstance() {
if (instance == null) {
instance = new AppStackManager();
}
return instance;
} /**
* 添加Activity到堆栈
*/
public void addActivity(Activity activity) {
if (activityStack == null) {
activityStack = new Stack<Activity>();
}
if (!activityStack.contains(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.overridePendingTransition(R.anim.push_right_out, R.anim.push_right_out);
}
} /**
* 结束指定类名的Activity
*/
public void finishActivity(Class<?> cls) {
for (Activity activity : activityStack) {
if (activity.getClass().equals(cls)) {
finishActivity(activity);
}
}
} /**
* 弹出栈顶
*/
public void finishAfterActivity(Class<?> cls) {
for (int i = activityStack.size() - 1; i > 0; i--) {
if (null != activityStack.get(i)) {
if (activityStack.get(i).getClass().equals(cls))
break;
activityStack.get(i).finish();
}
} } /**
* 结束所有Activity
*/
public void finishAllActivity() {
for (int i = 0; i < activityStack.size(); i++) {
if (null != activityStack.get(i)) {
activityStack.get(i).finish();
}
}
activityStack.clear();
// System.exit(0);
} /**
* 重新登录Activity
*/
public void LoginActivity() {
for (int i = 0; i < activityStack.size(); i++) {
if (null != activityStack.get(i) && !activityStack.get(i).getClass().getName().equals(LoginActivity.class.getName())) {
activityStack.get(i).finish();
}
}
} /**
* 到首页
*/
public void goToMainActivity() {
for (int i = 0; i < activityStack.size(); i++) {
if (null != activityStack.get(i) && !activityStack.get(i).getClass().getName().equals(MainActivity.class.getName())) {
activityStack.get(i).finish();
}
} } /**
* 退出应用程序
*/
public void AppExit(Context context) {
try {
finishAllActivity();
ActivityManager activityMgr = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
activityMgr.killBackgroundProcesses(context.getPackageName());
System.exit(0);
} catch (Exception e) {
}
}
}

使用方法:

@Override
protected void onStart() {
super.onStart();
AppStackManager.getInstance().addActivity(this);//加入栈
}
@Override
protected void onDestroy() { AppStackManager.getInstance().finishActivity(this);
super.onDestroy();
}

最新文章

  1. 【bzoj4518】 Sdoi2016—征途
  2. python错误类型
  3. fsfds
  4. 《深入.NET平台和C#编程》--题型释疑
  5. UIImageView swift
  6. python中的文件
  7. c#枚举自定义,用于数据绑定。
  8. 注册表删除chrome插件
  9. java 判断对象是否是某个类的类型方法
  10. Qt之QComboBox(基本应用、代理设置)
  11. 【代码实现】PHP生成各种随机验证码
  12. java复用类
  13. SpringMVC提交数据遭遇基础类型和日期类型报400错误解决方法
  14. spring中注解式事务不生效的问题
  15. 映像文件工具srec
  16. 根据不同浏览器判断OCX插件是否安装
  17. python day1 之三级菜单的正确姿势
  18. python3.4学习笔记(十八) pycharm 安装使用、注册码、显示行号和字体大小等常用设置
  19. [calss*=&quot;col-&quot;]匹配类名中包含col-的类名,^以col-开头,$以col-结尾
  20. ubuntu设置开机默认进入字符界面方法 ubuntu 12.04 桌面版关闭图形界面(转)

热门文章

  1. Apache 多端口配置方法
  2. centos使用--rpm和yum的关系以及基本用法
  3. 忙着Windows 10迁移?不要忘记Windows 7的安全!
  4. Erlang OTP学习:supervisor [转]
  5. Git从入门到熟练
  6. groupSum6后向遍历
  7. windows 下开发的 .netCore MVC 部署到 Linux(Mint)
  8. rownum浅谈(二)
  9. [DM8168]Linux下SPI驱动测试
  10. Spring Web MVC 笔记