gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章实现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压入栈中。退出的时候在依次取出来.

  。

复制代码 代码如下:

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的方法即可退出所有activity. 。

最后此篇关于实现activity管理器一次退出所有activity的文章就讲到这里了,如果你想了解更多关于实现activity管理器一次退出所有activity的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com