源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-01-16 08:47 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:实现activity管理器一次退出所有activity
关于怎么一次退出所有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压入栈中。退出的时候在依次取出来。
[u]复制代码[/u] 代码如下:
public class MyActivityManager { private static MyActivityManager instance; private Stack<Activity> 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<Activity>();     }     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
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部