android项目管理activity的类
2016-07-27 11:17
381 查看
在浏览博客的时候,看到一个管理activity的类,挺有用的,mark过来,以后可以添加到自己的项目;
public class AppManager {
private static Stack<BaseActivity> activityStack;
private static AppManager instance;
private AppManager() { }
/***单实例,UI无需考虑多线程同步问题*/
public static AppManager getAppManager()
{
if (instance == null)
{
instance = new AppManager();
}
return instance;
}
/*** 添加Activity到栈*/
public void addActivity(BaseActivity activity)
{
if (activityStack == null) {
activityStack = new Stack<BaseActivity>();
}
activityStack.add(activity);
}
/*** 获取当前Activity(栈顶Activity)*/
public BaseActivity currentActivity() {
if (activityStack == null || activityStack.isEmpty()) {
return null;
}
BaseActivity activity = activityStack.lastElement();
return activity;
}
/*** 获取当前Activity(栈顶Activity) 没有找到则返回null*/
public BaseActivity findActivity(Class<?> cls) {
BaseActivity activity = null;
for (BaseActivity aty : activityStack) {
if (aty.getClass().equals(cls)) {
activity = aty;
break;
}
}
return activity;
}
/*** 结束当前Activity(栈顶Activity)*/
public void finishActivity() {
BaseActivity 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) {
for (BaseActivity activity : activityStack) {
if (activity.getClass().equals(cls)) {
finishActivity(activity);
}
}
}
/*** 关闭除了指定activity以外的全部activity 如果cls不存在于栈中,则栈全部清空
** @param cls */
public void finishOthersActivity(Class<?> cls) {
for (BaseActivity 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.killBackgroundProcesses(context.getPackageName());
System.exit(0);
} catch (Exception e) {
System.exit(0);
}
}}
public class AppManager {
private static Stack<BaseActivity> activityStack;
private static AppManager instance;
private AppManager() { }
/***单实例,UI无需考虑多线程同步问题*/
public static AppManager getAppManager()
{
if (instance == null)
{
instance = new AppManager();
}
return instance;
}
/*** 添加Activity到栈*/
public void addActivity(BaseActivity activity)
{
if (activityStack == null) {
activityStack = new Stack<BaseActivity>();
}
activityStack.add(activity);
}
/*** 获取当前Activity(栈顶Activity)*/
public BaseActivity currentActivity() {
if (activityStack == null || activityStack.isEmpty()) {
return null;
}
BaseActivity activity = activityStack.lastElement();
return activity;
}
/*** 获取当前Activity(栈顶Activity) 没有找到则返回null*/
public BaseActivity findActivity(Class<?> cls) {
BaseActivity activity = null;
for (BaseActivity aty : activityStack) {
if (aty.getClass().equals(cls)) {
activity = aty;
break;
}
}
return activity;
}
/*** 结束当前Activity(栈顶Activity)*/
public void finishActivity() {
BaseActivity 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) {
for (BaseActivity activity : activityStack) {
if (activity.getClass().equals(cls)) {
finishActivity(activity);
}
}
}
/*** 关闭除了指定activity以外的全部activity 如果cls不存在于栈中,则栈全部清空
** @param cls */
public void finishOthersActivity(Class<?> cls) {
for (BaseActivity 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.killBackgroundProcesses(context.getPackageName());
System.exit(0);
} catch (Exception e) {
System.exit(0);
}
}}
相关文章推荐
- android开发常用小知识点整理
- Android Studio 使用Gradle多渠道打包
- android 环境配置
- android fragment 使用以及嵌套使用 底部菜单和顶部菜单
- Android 开始一个activity的同时保留导航
- android删除私密信息
- Android源码解析Activity#setContentView()方法
- 新手Android学习笔记 05——IllegalStateException非法异常之一
- 新手Android学习笔记 05——IllegalStateException非法异常之一
- android studio radioGroup radiobutton使用listactivity演示
- 动态修改actionBar返回键颜色
- Activity的启动模式
- 关于Android下各个布局方式里面LayoutParams的用法
- 关于Android下各个布局方式里面LayoutParams的用法
- Android 自己实现 NavigationView [Design Support Library(1)]
- android developer tiny share-20160726
- android developer tiny share-20160726
- android studio 快捷键
- View的工作原理
- Android中Tab设置的一个神奇属性“clipChildren”