1. @Override
  2. protected void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. // 添加Activity到堆栈  
  5. AppManager.getAppManager().addActivity(this);
  6. }
  7. @Override
  8. protected void onDestroy() {
  9. super.onDestroy();
  10. // 结束Activity&从堆栈中移除  
  11. AppManager.getAppManager().finishActivity(this);
  12. }
  13. * 应用程序Activity管理类:用于Activity管理和应用程序退出 
    1. * @author liux (http://my.oschina.net/liux)
    2. * @version 1.0
    3. * @created 2012-3-21
    4. */
    5. public class AppManager {
    6. private static Stack<Activity> activityStack;
    7. private static AppManager instance;
    8. private AppManager(){}
    9. /**
    10. * 单一实例 
    11. */
    12. public static AppManager getAppManager(){
    13. if(instance==null){
    14. instance=new AppManager();
    15. }
    16. return instance;
    17. }
    18. /**
    19. 添加Activity到堆栈 
    20. */
    21. public void addActivity(Activity activity){
    22. if(activityStack==null){
    23. activityStack=new Stack<Activity>();
    24. }
    25. activityStack.add(activity);
    26. }
    27. /**
    28.  * 获取当前Activity(堆栈中最后一个压入的) 
    29. */
    30. public Activity currentActivity(){
    31. Activity activity=activityStack.lastElement();
    32. return activity;
    33. }
    34. /**
    35. 结束当前Activity(堆栈中最后一个压入的) 
    36. */
    37. public void finishActivity(){
    38. Activity activity=activityStack.lastElement();
    39. finishActivity(activity);
    40. }
    41. /**
    42. 结束指定的Activity 
    43. */
    44. public void finishActivity(Activity activity){
    45. if(activity!=null){
    46. activityStack.remove(activity);
    47. activity.finish();
    48. activity=null;
    49. }
    50. }
    51. /**
    52.   * 结束指定类名的Activity 
    53. */
    54. public void finishActivity(Class<?> cls){
    55. for (Activity activity : activityStack) {
    56. if(activity.getClass().equals(cls) ){
    57. finishActivity(activity);
    58. }
    59. }
    60. }
    61. /**
    62.      * 结束所有Activity 
    63. */
    64. public void finishAllActivity(){
    65. for (int i = 0, size = activityStack.size(); i < size; i++){
    66. if (null != activityStack.get(i)){
    67. activityStack.get(i).finish();
    68. }
    69. }
    70. activityStack.clear();
    71. }
    72. /**
    73.      * 退出应用程序 
    74. */
    75. public void AppExit(Context context) {
    76. try {
    77. finishAllActivity();
    78. ActivityManager activityMgr= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    79. activityMgr.restartPackage(context.getPackageName());
    80. System.exit(0);
    81. } catch (Exception e) { }
    82. }
    83. }

最新文章

  1. PHP乱码问题,UTF-8(乱码) (share)
  2. 用grunt进行前端工程化之路
  3. SwiftLint——Swift代码检查及自动格式化工具
  4. Thread.CurrentPrincipal & HttpContext.Current.User
  5. 如何处理NBU Frozen Media
  6. mp3文件 ID3v2 帧标识的含义
  7. [复变函数]第10堂课 3.2 Cauchy 积分定理
  8. LINUX下安装ORACLE,完全搞定
  9. linux新内核中关闭硬盘的DMA
  10. JSON stringify and parse
  11. 串口WIF简单调试
  12. 在阿里云上布置git server
  13. android app启动过程(转)
  14. NYNU_省赛选拔题(5)
  15. Android intent 笔记
  16. loadrunner 录制中文出现乱码的解决办法
  17. 英语口语练习系列-C12-不了解
  18. Python 操作集合
  19. (其他)window10上好用的软件
  20. linux内存源码分析 - SLAB分配器概述

热门文章

  1. iOS知识点汇总
  2. cocos2d-x_AnchorPoint锚点
  3. 十分钟掌握diff&amp;patch用法
  4. kentico中的urls
  5. ORA-00980:synonym translation is no longer valid
  6. 把一串数字表示成千位分隔形式——toLocaleString()
  7. [JZOJ 5437] [NOIP2017提高A组集训10.31] Sequence 解题报告 (KMP)
  8. MyLayer MyScene
  9. CCS+C6678LE开发记录12:UIA组件的安装
  10. IOS设备获取崩溃日志的办法