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. }

AppManager类,管理Activity和App的更多相关文章

  1. 【Android工具类】Activity管理工具类AppManager

    转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 import java.util.Stack; import android.app.Activity; i ...

  2. 管理Activity

     开源中国摘取的代码,这个可以管理activity 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...

  3. Android源码剖析之Framework层实战版(Ams管理Activity启动)

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 讲到实战,就不得不拿两个例子来说明,本篇想拿的是应用最广泛的两个:Ams和Wms,一个管理activ ...

  4. Android 管理Activity中的fragments

    为了管理Activity中的fragments,需要使用FragmentManager,为了得到它,需要调用Activity中的getFragmentManager()方法,接下来详细介绍,感兴趣的朋 ...

  5. Android-管理Activity生命周期 -开始一个Activity

    很多程序都是从main()方法开始启动的,和其他程序不同,android是在activity生命周期的特定状态的特定回调方法中初始化代码的.activity启动和销毁的时候都用很多回调方法. 这里将要 ...

  6. 管理Activity 用户在主界面按两次回退退出系统

    1:定义一个用于管理Activity的类. /* * 用于管理Activity */ public class SysApp extends Application{ private List< ...

  7. android开发Tost工具类管理(一)

    Tost工具类管理: package com.gzcivil.utils; import android.content.Context; import android.widget.Toast; / ...

  8. Android-管理Activity生命周期 -重新创建Activity

    按照正常的app行为,很少情况下activity会销毁,只有当用户点击了返回按钮或者activity通过调用finish()发出销毁信号.系统也有可能销毁activity如果它是停止状态并且很久没有使 ...

  9. Android-管理Activity生命周期 -停止和重启Activity

    停止和重启activity在activity的生命周期中很重要,它能让用户感觉你的app总是激活的而且不会丢失他们的进度.activity在下面的这些情况会停止和重启: 用户打开常用app窗口然后从你 ...

随机推荐

  1. Cocos2d-x-lua学习点滴

    Lua下的方法.自己项目经验,个人见解,不能确保正确. Sprite: local Light = CCSprite:create("light.png")             ...

  2. yolo源码解析(1):代码逻辑

    一. 整体代码逻辑 yolo中源码分为三个部分,\example,\include,以及\src文件夹下都有源代码存在. 结构如下所示 ├── examples │ ├── darknet.c(主程序 ...

  3. bzoj3732: Network(最小生成树+LCA)

    3732: Network 题目:传送门 题解: 第一眼就看到最大边最小,直接一波最小生成树. 一开始还担心会错,问了一波肉大佬,任意两点在最小生成树上的路径最大边一定是最小的. 那么事情就变得简单起 ...

  4. ThinkPHP5.0框架开发--第5章 TP5.0 控制器

    ThinkPHP5.0框架开发--第5章 TP5.0 控制器 第5章 TP5.0 控制器 ============================================== 上次复习 1.路 ...

  5. POJ 1952 DP

    思路: 这题要求最长下降子序列的长度和个数,我们可以增加 数组maxlen[size](记录当前第1个点到第i个点之间的最长下降序列长度) 和maxnum[size](记录1~i之间的最长下降序列个数 ...

  6. SpringMVC(二) 参数绑定 与 JSON

    参数绑定 http请求传输的参数都是String类型,但是Hanlder业务方法中的参数都是我们指定的数据类型,如int,Object等,所以需要处理参数的类型转换.此项工作不需要我们开发人员去完成, ...

  7. 织梦dedecms支持flash的flv文件播放功能代码

    1.打开/include/FCKeditor/editor/dialog/dede_media.htm if(playtype=="rm"|| (playtype=="- ...

  8. NOIp2018模拟赛四十三

    有了昨天的经验,不慌,开题先看source ******** 再看看题,看到C题标题: ******** 有毒... B题的“显然”50分结论推了我一个小时,然后就弃疗了... 成绩:0+50+5=5 ...

  9. (2016北京集训十)【xsy1528】azelso - 概率期望dp

    北京集训的题都是好题啊~~(于是我爆0了) 注意到一个重要的性质就是期望是线性的,也就是说每一段的期望步数可以直接加起来,那么dp求出每一段的期望就行了... 设$f_i$表示从$i$出发不回到$i$ ...

  10. Java XSSF 导出excel 工具类

    参数解释: title:导出excel标题.headers 导出到excel显示的列头. columns 对应数据库字段 .list 导出数据1.pox中添加依赖 <dependency> ...