Activity优化几个结束的方法
1 package com.itau.jingdong; 2 3 import java.util.Stack; 4 import android.app.Activity; 5 import android.app.ActivityManager; 6 import android.content.Context; 7 8 /** 9 * @author Tau.Chen 陈涛 10 * 11 * @email tauchen1990@gmail.com,1076559197@qq.com 12 * 13 * @date 2013年9月12日 14 * 15 * @version V_1.0.0 16 * 17 * @description 应用程序Activity的管理类 18 * 19 */ 20 public class AppManager { 21 private static Stack<Activity> mActivityStack; 22 private static AppManager mAppManager; 23 24 private AppManager() { 25 } 26 27 /** 28 * 单一实例 29 */ 30 public static AppManager getInstance() { 31 if (mAppManager == null) { 32 mAppManager = new AppManager(); 33 } 34 return mAppManager; 35 } 36 37 /** 38 * 添加Activity到堆栈 39 */ 40 public void addActivity(Activity activity) { 41 if (mActivityStack == null) { 42 mActivityStack = new Stack<Activity>(); 43 } 44 mActivityStack.add(activity); 45 } 46 47 /** 48 * 获取栈顶Activity(堆栈中最后一个压入的) 49 */ 50 public Activity getTopActivity() { 51 Activity activity = mActivityStack.lastElement(); 52 return activity; 53 } 54 55 /** 56 * 结束栈顶Activity(堆栈中最后一个压入的) 57 */ 58 public void killTopActivity() { 59 Activity activity = mActivityStack.lastElement(); 60 killActivity(activity); 61 } 62 63 /** 64 * 结束指定的Activity 65 */ 66 public void killActivity(Activity activity) { 67 if (activity != null) { 68 mActivityStack.remove(activity); 69 activity.finish(); 70 activity = null; 71 } 72 } 73 74 /** 75 * 结束指定类名的Activity 76 */ 77 public void killActivity(Class<?> cls) { 78 for (Activity activity : mActivityStack) { 79 if (activity.getClass().equals(cls)) { 80 killActivity(activity); 81 } 82 } 83 } 84 85 /** 86 * 结束所有Activity 87 */ 88 public void killAllActivity() { 89 for (int i = 0, size = mActivityStack.size(); i < size; i++) { 90 if (null != mActivityStack.get(i)) { 91 mActivityStack.get(i).finish(); 92 } 93 } 94 mActivityStack.clear(); 95 } 96 97 /** 98 * 退出应用程序 99 */ 100 public void AppExit(Context context) { 101 try { 102 killAllActivity(); 103 ActivityManager activityMgr = (ActivityManager) context 104 .getSystemService(Context.ACTIVITY_SERVICE); 105 activityMgr.restartPackage(context.getPackageName()); 106 System.exit(0); 107 } catch (Exception e) { 108 } 109 } 110 }
分类:
-android基础
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个 java 空指针异常的解决过程
· 揭开 SQL Server 和 PostgreSQL 填充因子的神秘面纱
· 没有调度器的协程不是好协程,零基础深入浅出 C++20 协程
· 别做抢活的导演:代码中的抽象层次原则
· 从 Redis 客户端超时到 .NET 线程池挑战
· 今年失业的程序员兄弟姐妹们,你们都去干什么了?
· TinyEditor v4.0 alpha 版本发布:表格更强大,表情更丰富,上传体验超乎想象!
· .NET周刊【7月第2期 2025-07-13】
· 圆方树学习笔记 —— 一种关于点双连通分量的思考方式
· MySQL 17 如何正确地显示随机消息?