Activity管理类
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();
}
Activity管理类的更多相关文章
- activity管理类 appManager
程序启动第一个界面类: net.oschina.app.AppStart功能描述:一张图片代码细节描述:一个透明度的动画效果,效果动画完成后自动启动新的Activity(Main) 基本BaseAct ...
- Android Activity管理类
public class AppManager { private static Stack<Activity> activityStack; private static AppMana ...
- 【Android工具类】Activity管理工具类AppManager
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 import java.util.Stack; import android.app.Activity; i ...
- Android Activity 管理 (AppManager)(非原创)
AppManager 类: /** * 应用程序Activity管理类:用于Activity管理和应用程序退出 * */ public class AppManager { private ...
- 我的Android进阶之旅------>Android关于Activity管理的一个简单封装
怎样管理当前的执行Activity栈,怎样彻底退出程序.本文封装了一个Activity管理类,能够方便随时退出程序. import java.util.Stack; import android.ap ...
- DownloadManager 下载管理类
演示 简介 从Android 2.3开始新增了一个下载管理类,在SDK的文档中我们查找android.app.DownloadManager可以看到.下载管理类可以长期处理多个HTTP下载任务,客户端 ...
- Android项目实战(三十七):Activity管理及BaseActivity的实现
Ps:7-10月 完成公司两个app项目上架.漏掉的总结 开始慢慢补上. 一.写一个Activity的管理类 1.单例模式,以栈(先进后出)的形式存储Activity对象 public class A ...
- [置顶]
滴滴插件化框架VirtualAPK原理解析(一)之插件Activity管理
上周末,滴滴与360都开源了各自的插件化框架,VirtualAPK与RePlugin,作为一个插件化方面的狂热研究者,在周末就迫不及待的下载了Virtualapk框架来进行研究,本篇博客带来的是Vir ...
- Android wifi管理类:WifiAdmin
1.wifi的五种状态: WIFI_STATE_DISABLED WIFI网卡不可用 WIFI_STATE_DISABLING WIFI网卡正在关闭 WIFI_STATE_ENABLED ...
随机推荐
- STM32遇到的问题
1.GPIO输出实验的时候,原来的库和现成的源代码有出入?导致实验现象不同,delay_ms,主要集中在这个函数上面 2.按键输入的时候,LED和KEY 初始化全部放在主函数,有按下按键以后,灯闪烁不 ...
- java程序——输入判断成绩
import java.util.*; class ExceptionOut extends Exception{ } public class Score { public static void ...
- CodeForces 785C Anton and Fairy Tale 二分
题意: 有一个谷仓容量为\(n\),谷仓第一天是满的,然后每天都发生这两件事: 往谷仓中放\(m\)个谷子,多出来的忽略掉 第\(i\)天来\(i\)只麻雀,吃掉\(i\)个谷子 求多少天后谷仓会空 ...
- Android 微信支付步骤
以前自己写过微信支付,今天让我用h5调用微信支付,结果还浪费了点时间,虽然时间不长. 1.导入jar包 .微信提供的jar包 2.写你的微信支付的代码,其实如果参数都有了就一段代码: public v ...
- js常用框架
JS常用框架:jQuery.Prototype.MooTools 参考:w3cshool jQuery jQuery 是目前最受欢迎的 JavaScript 框架. 它使用 CSS 选择器来访问和操作 ...
- 剑指Offer - 九度1356 - 孩子们的游戏(圆圈中最后剩下的数)
剑指Offer - 九度1356 - 孩子们的游戏(圆圈中最后剩下的数)2014-02-05 19:37 题目描述: 每年六一儿童节,JOBDU都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.H ...
- DOS程序员手册(三)
56页 第4章DOS和BIOS接口 本章介绍了用户程序访问DOS内核和BIOS所提供的各种服务的方法.为了访问这 些服务,我们可以从任何编程语言中调用各个软件中断,这些中断便是我们在本 ...
- Object Pascal中文手册 经典教程
Object Pascal 参考手册 (Ver 0.1)ezdelphi@hotmail.com OverviewOverview(概述)Using object pascal(使用 object p ...
- 六 APPIUM Android 定位方式
文本转自:http://www.cnblogs.com/sundalian/p/5629500.html APPIUM Android 定位方式 1.定位元素应用元素 1.1通过id定位元素 An ...
- Oracle 遇到的问题:dos命令下imp导入数据时出错
赋予用户dba权限:很多情况下会遇到没有权限需要输入用户名及密码才能导入 --已知被赋予权限的用户名为:batch --第一步 登陆 sqlplus /nolog sql>conn /as sy ...