如何多次访问后台堆栈中的单例 Android Activity
How to access a singleton Android Activity in a backstack multiple times
A1 为主activity。它是单个实例 activity 意味着不应多次实例化它,因为重新创建它的成本很高。
场景是:
- A1 呼叫 A2
- A2 呼叫 A3
- A3 调用 A1
预期的堆栈是:
顶部 -> [A1|A3|A2|A1] <- 底部
我希望 A1 位于此堆栈的顶部。因此,当我按下后退按钮时,我希望 return 到 A3,然后是 A2,最后回到 A1。
目前A1被定义为launchMode=singleinstance。自然地,第二次调用 A1 会从后台清除所有其他活动(A2 和 A3)。
问题是,我怎样才能让一个单例 activity 多次存在于后台堆栈中以用于导航目的?
注意:假设 backstack 结构在内部由对活动的 引用 组成,那么我应该能够以某种方式创建对单例的两个不同引用 Activity .
how can I let a singleton activity exist in a backstack more than once for navigation purposes?
你不能。您可能必须覆盖默认的 BACK 按钮行为,可能是在您的所有活动中,以便您强制流程成为您想要的,并且在您确定完成之前不要 finish()
A1。
或者,修改您的导航以避免 A3 启动 A1。例如,使用导航抽屉允许用户随时返回 A1,但您可以在该导航中清除返回堆栈。
或者,让A1更便宜,这样创建两个实例就没那么贵了。活动本身很少昂贵;通常,activity 加载的东西是昂贵的,并且可以通过单例缓存(小心地)共享。
或者,将这一切合并为一个 activity,片段 F1 到 F3,您可以更轻松地手动滚动导航。
Assuming that the backstack structure is internally composed of references to the activities, then somehow I should be able to create two different references to a singleton Activity.
没有。这类似于说 "assuming that the Web browser's back stack structure is internally composed of references to Web pages, then somehow I should be able to create two different references to a singleton Web page"。最后我检查了一下,这在 Web 开发中是不可能的,因为没有 "singleton Web page" 这样的东西。 Android 也没有真正的 "singleton activity" 的概念 -- singleInstance
确实有更多用于从应用程序外部导航到应用程序的内容。
A1 为主activity。它是单个实例 activity 意味着不应多次实例化它,因为重新创建它的成本很高。
场景是:
- A1 呼叫 A2
- A2 呼叫 A3
- A3 调用 A1
预期的堆栈是:
顶部 -> [A1|A3|A2|A1] <- 底部
我希望 A1 位于此堆栈的顶部。因此,当我按下后退按钮时,我希望 return 到 A3,然后是 A2,最后回到 A1。
目前A1被定义为launchMode=singleinstance。自然地,第二次调用 A1 会从后台清除所有其他活动(A2 和 A3)。
问题是,我怎样才能让一个单例 activity 多次存在于后台堆栈中以用于导航目的?
注意:假设 backstack 结构在内部由对活动的 引用 组成,那么我应该能够以某种方式创建对单例的两个不同引用 Activity .
how can I let a singleton activity exist in a backstack more than once for navigation purposes?
你不能。您可能必须覆盖默认的 BACK 按钮行为,可能是在您的所有活动中,以便您强制流程成为您想要的,并且在您确定完成之前不要 finish()
A1。
或者,修改您的导航以避免 A3 启动 A1。例如,使用导航抽屉允许用户随时返回 A1,但您可以在该导航中清除返回堆栈。
或者,让A1更便宜,这样创建两个实例就没那么贵了。活动本身很少昂贵;通常,activity 加载的东西是昂贵的,并且可以通过单例缓存(小心地)共享。
或者,将这一切合并为一个 activity,片段 F1 到 F3,您可以更轻松地手动滚动导航。
Assuming that the backstack structure is internally composed of references to the activities, then somehow I should be able to create two different references to a singleton Activity.
没有。这类似于说 "assuming that the Web browser's back stack structure is internally composed of references to Web pages, then somehow I should be able to create two different references to a singleton Web page"。最后我检查了一下,这在 Web 开发中是不可能的,因为没有 "singleton Web page" 这样的东西。 Android 也没有真正的 "singleton activity" 的概念 -- singleInstance
确实有更多用于从应用程序外部导航到应用程序的内容。