首页 文章

如何检查活动类是否在后台堆栈中并在Android中相应地进行管理?

提问于
浏览
0

我想检查具有特定类的对象是否在后栈中 . 如果是这样,我将使用FLAG_ACTIVITY_CLEAR_TOP,如果没有,我想弹出root并推送Class .

假设我在堆栈中有A,C,D并且我想要添加B.由于堆栈中不存在B(这里),我希望堆栈变为A,B(清除C,D并推送B) .

如果我在堆栈中有A,B,C,D,它会弹出C,D而不会推B.

有没有办法在不清除堆栈中的所有内容并使用Intent参数“GoToClass”推送A类并在加载-root-A后推送类“GoToClass”?

来自Android文档:

public static final int FLAG_ACTIVITY_CLEAR_TOP如果设置,并且正在启动的活动已经在当前任务中运行,则不会启动该活动的新实例,而是关闭其上的所有其他活动,此Intent将是作为新的意图传递到(现在在顶部)旧活动 . 例如,考虑一个由活动组成的任务:A,B,C,D . 如果D调用带有解析为活动B组件的Intent的startActivity(),则C和D将完成,B接收给定的Intent ,导致堆栈现在是:A,B .

1 回答

  • 1

    当活动被销毁或从后栈中删除时,将调用的最终方法是 onDestroy() . 现在在 onDestroy() 方法中保存变量并将其保存在 Shared preferences 中或创建一个类变量并检查该变量中的值不等于null . 如果变量有一些值,那么肯定会调用 onDestroy() 方法并且您的活动不再处于后台堆栈中 .

相关问题