我想检查具有特定类的对象是否在后栈中 . 如果是这样,我将使用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 回答
当活动被销毁或从后栈中删除时,将调用的最终方法是
onDestroy()
. 现在在onDestroy()
方法中保存变量并将其保存在 Shared preferences 中或创建一个类变量并检查该变量中的值不等于null . 如果变量有一些值,那么肯定会调用onDestroy()
方法并且您的活动不再处于后台堆栈中 .