关于Android栈的一些操作
2016-07-07 17:47
543 查看
public class AppManager {
private static Stack<Activity> mActivityStack;
private static AppManager mAppManager;
private AppManager() {
}
/**
* 单一实例
*/
public static AppManager getInstance() {
if (mAppManager == null) {
mAppManager = new AppManager();
}
return mAppManager;
}
/**
* 添加Activity到堆栈
*/
public void addActivity(Activity activity) {
if (mActivityStack == null) {
mActivityStack = new Stack<Activity>();
}
mActivityStack.add(activity);
}
/**
* 获取栈顶Activity(堆栈中最后一个压入的)
*/
public Activity getTopActivity() {
Activity activity = mActivityStack.lastElement();
return activity;
}
/**
* 结束栈顶Activity(堆栈中最后一个压入的)
*/
public void killTopActivity() {
Activity activity = mActivityStack.lastElement();
killActivity(activity);
}
/**
* 结束指定的Activity
*/
public void killActivity(Activity activity) {
if (activity != null) {
mActivityStack.remove(activity);
activity.finish();
activity = null;
}
}
/**
* 结束指定类名的Activity
*/
public void killActivity(Class<?> cls) {
for (Activity activity : mActivityStack) {
if (activity.getClass().equals(cls)) {
killActivity(activity);
}
}
}
/**
* 结束所有Activity
*/
public void killAllActivity() {
for (int i = 0, size = mActivityStack.size(); i < size; i++) {
if (null != mActivityStack.get(i)) {
mActivityStack.get(i).finish();
}
}
mActivityStack.clear();
}
/**
* 退出应用程序
*/
public void AppExit(Context context) {
try {
killAllActivity();
ActivityManager activityMgr = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
activityMgr.restartPackage(context.getPackageName());
System.exit(0);
} catch (Exception e) {
}
}
}
private static Stack<Activity> mActivityStack;
private static AppManager mAppManager;
private AppManager() {
}
/**
* 单一实例
*/
public static AppManager getInstance() {
if (mAppManager == null) {
mAppManager = new AppManager();
}
return mAppManager;
}
/**
* 添加Activity到堆栈
*/
public void addActivity(Activity activity) {
if (mActivityStack == null) {
mActivityStack = new Stack<Activity>();
}
mActivityStack.add(activity);
}
/**
* 获取栈顶Activity(堆栈中最后一个压入的)
*/
public Activity getTopActivity() {
Activity activity = mActivityStack.lastElement();
return activity;
}
/**
* 结束栈顶Activity(堆栈中最后一个压入的)
*/
public void killTopActivity() {
Activity activity = mActivityStack.lastElement();
killActivity(activity);
}
/**
* 结束指定的Activity
*/
public void killActivity(Activity activity) {
if (activity != null) {
mActivityStack.remove(activity);
activity.finish();
activity = null;
}
}
/**
* 结束指定类名的Activity
*/
public void killActivity(Class<?> cls) {
for (Activity activity : mActivityStack) {
if (activity.getClass().equals(cls)) {
killActivity(activity);
}
}
}
/**
* 结束所有Activity
*/
public void killAllActivity() {
for (int i = 0, size = mActivityStack.size(); i < size; i++) {
if (null != mActivityStack.get(i)) {
mActivityStack.get(i).finish();
}
}
mActivityStack.clear();
}
/**
* 退出应用程序
*/
public void AppExit(Context context) {
try {
killAllActivity();
ActivityManager activityMgr = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
activityMgr.restartPackage(context.getPackageName());
System.exit(0);
} catch (Exception e) {
}
}
}
相关文章推荐
- 有关Android中layout_weight的深处挖掘
- Android使用Gson解析JSON数据
- Android cordova插件 plugin.xml 添加jar包依赖的两种方法 比如supportv4的包
- TextUtils方法介绍
- librtmp 日志的修改和操作 给android打印
- android中实现文字的超链接的应用内跳转
- Android开发之动画效果浅析
- Android控件--ClearEditText带清除功能的输入框
- Android来电监听和去电监听
- 如何实现android和服务器长连接呢?推送消息的原理
- Jenkins实现Android项目CI和二维码下载
- Android 控制台异常:ScrollView can host only one direct child
- Android Binder设计与实现 - 设计篇
- android--email发送邮件,文本还有附件形式的邮件
- Context.getExternalFilesDir()和Context.getExternalCacheDir()
- Android SearchView使用
- Android Studio 插件
- 热修复 nuwa android studio cmd $ANDROID_HOME is not defined
- Android Studio常用快捷键
- Android 优化性能之 如何避免--过度绘制