当前位置:  编程技术>移动开发

实现activity管理器一次退出所有activity

    来源: 互联网  发布时间:2014-10-22

    本文导语:  关于怎么一次退出所有Activity网上有很多很多种说法,比如用杀进程的方式:android.os.Process.killProcess(android.os.Process.myPid());这种方式需要添加权限android.permission.KILL_BACKGROUND_PROCESSES;或者用System.exit(0);退出。另外一种方法是用Acti...

关于怎么一次退出所有Activity网上有很多很多种说法,比如用杀进程的方式:android.os.Process.killProcess(android.os.Process.myPid());这种方式需要添加权限android.permission.KILL_BACKGROUND_PROCESSES;
或者用System.exit(0);退出。

另外一种方法是用ActivityManager的restartPackage()方法;但是我试过了,都没用。。。

还有人说让程序抛出一个异常退出,这种严重影响用户体验的做法我们是极力不推荐的。还有别的方法,如退出的时候发广播通知所有Activity等等。

个人比较推荐的一种方法是自定义一个Activity管理器,来管理所有已打开的Activity,要退出的时候再通过这个管理器来退出所有Activity,经验证,这种方法是可行的,而且效果很好。

下面是一个简单的Activity管理器代码,主要是建立一个栈,把每个已打开的Activity压入栈中。退出的时候在依次取出来。

代码如下:

public class MyActivityManager {

private static MyActivityManager instance;
private Stack activityStack;//activity栈

private MyActivityManager() {
}
//单例模式
public static MyActivityManager getInstance() {
    if (instance == null) {
        instance = new MyActivityManager();
    }
    return instance;
}
//把一个activity压入栈中
public void pushOneActivity(Activity actvity) {
    if (activityStack == null) {
        activityStack = new Stack();
    }
    activityStack.add(actvity);
    Log.d("MyActivityManager ", "size = " + activityStack.size());
}
//获取栈顶的activity,先进后出原则
public Activity getLastActivity() {
    return activityStack.lastElement();
}
//移除一个activity
public void popOneActivity(Activity activity) {
    if (activityStack != null && activityStack.size() > 0) {
        if (activity != null) {
            activity.finish();
            activityStack.remove(activity);
            activity = null;
        }

    }
}
//退出所有activity
public void finishAllActivity() {
    if (activityStack != null) {
        while (activityStack.size() > 0) {
            Activity activity = getLastActivity();
            if (activity == null) break;
            popOneActivity(activity);
        }
    }
}}

在每一个activity中的onCreate方法里调用压入方法把当前activity压入管理栈中。比如在MainActivity中:
MyActivityManager mam = MyActivityManager.getInstance();
mam.pushOneActivity(MainActivity.this);就把当前activity压入了栈中。在退出所有Activity的地方调用退出所有Activity的方法即可退出所有activ


    
 
 

您可能感兴趣的文章:

  • android游戏载入的activity跳转到游戏主菜单的activity具体实现
  • android activity设置无标题实现全屏
  • Android实现退出时关闭所有Activity的方法
  • Android实现Activity界面切换添加动画特效的方法
  • Android中通过view方式获取当前Activity的屏幕截图实现方法
  • Activity透明/半透明效果的设置transparent(两种实现方法)
  • Activity与Service之间交互并播放歌曲的实现代码
  • android PopupWindow 和 Activity弹出窗口实现方式
  • sh 脚本:请教实现非root退出
  • linux命令如何实现重启父进程而不会使其子进程退出
  • Android 再按一次返回键退出程序实现思路
  • linux下如何实现程序异常退出自动再运行
  • linux下如何实现线程的启动,暂停,和退出!
  • 如何实现qt程序退出linux系统自动关机?
  • 守护进程如何实现监视,一发现自己异常退出就重新启动?
  • Android双击返回键退出程序的实现方法
  • Android 按后退键退出Android程序的实现方法
  • Linux C 获取进程退出值的实现代码
  • C#实现点击按钮退出应用程序实例
  • Android 再按一次退出程序的实现方法
  • 怎么实现父进程不管被Kill掉还是自己错误而退出,子进程都不会受影响而被终止
  • Android里实现退出主程序的提示代码
  • android 完全退出应用程序实现代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何在其他盘中实现对这个盘中所有文件和文件的8映射
  • 怎样在JAVA里实现获取指定服务器上所有可用数据库的列表??
  • 拷贝一个目录下的所有文件到另外的目录如何用一条语句实现
  • 菜鸟提问:一个类实现了一个接口,除了要定义接口的所有方法外,可不可以再添加其他方法?
  • 使所有实现此接口(interface)的类拥有相同的构造器(contructor)?
  • 拷贝一个目录下的所有文件到另外的目录如何用一条语句实现 iis7站长之家
  • 有的书上说所有的BEAN类都必须实现javax.ejb.EJBObject接口,真的吗?
  • jquery 屏蔽某区域内所有元素 禁止输入的实现代码
  • 在java的GUI的应用程序中能否实现对容器(如Frame)中的所有组件遍历?
  • 怎样在linux下用命令实现cp目录a下的字目录的所有内容到b目录中,cp子目录内容???
  • C语言实现输入一个字符串后打印出该字符串中字符的所有排列
  • python 查找文件夹下所有文件 实现代码
  • C#递归实现显示文件夹及所有文件并计算其大小的方法
  • linux 虚拟主机管理软件,那里可以下载?如果要开发的话,怎么技术实现?倾我所有60分送上。
  • sco unix下如何用c实现编程杀死某个名称的所有进程?
  • 怎样在linux下用命令实现cp目录a下的子目录的所有内容到b目录中,只cp目录a的子目录内容???
  • C#获取Word文档中所有表格的实现代码分享
  • php实例分享之通过递归实现删除目录下的所有文件详解
  • PHP采用自定义函数实现遍历目录下所有文件的方法
  • C语言实现找出二叉树中某个值的所有路径的方法
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • socket实现多文件并发传输,求助多线程实现问题?
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • interface 到底有什么用???实现接口,怎么实现??
  • 通过javascript库JQuery实现页面跳转功能代码
  • 怎么用Jsp实现在页面实现树型结构?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • php实现socket实现客户端和服务端数据通信源代码
  • 网站重定向用C语言实现iptables,ACL实现
  • flash AS3反射实现(describeType和getDefinitionByName)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3