Android开发,当我开始一项新的活动时,我';我已经发布了一个,我如何才能转向我以前发布的那个呢?
这对我来说是必要的,因为我在我的应用程序中使用了导航抽屉,我不希望每次单击该项目时都为我启动一个新的活动 例如,导航抽屉中有两个项目,A和B。首先我单击A,它启动A活动。然后我点击B,它开始B活动。最后,我再次单击A,我想返回到最后一个A-activity及其状态,而不是启动新的A-activity。我怎样才能做到Android开发,当我开始一项新的活动时,我';我已经发布了一个,我如何才能转向我以前发布的那个呢?,android,android-activity,navigation-drawer,Android,Android Activity,Navigation Drawer,这对我来说是必要的,因为我在我的应用程序中使用了导航抽屉,我不希望每次单击该项目时都为我启动一个新的活动 例如,导航抽屉中有两个项目,A和B。首先我单击A,它启动A活动。然后我点击B,它开始B活动。最后,我再次单击A,我想返回到最后一个A-activity及其状态,而不是启动新的A-activity。我怎样才能做到 非常感谢 假设您有4项类似的活动: A-->B-->C-->D 其中D是最上面的活动,A是根活动。如果您“退回”到活动B,那么您需要做两件事以避免碰到B的onCreate方法 1.)
非常感谢 假设您有4项类似的活动: A-->B-->C-->D 其中D是最上面的活动,A是根活动。如果您“退回”到活动B,那么您需要做两件事以避免碰到B的onCreate方法 1.)使B成为“单一任务”活动。您可以在Android清单中执行此操作。简而言之,这意味着在这个任务中只有一个B的“实例”。如果B在被调用时已经在运行,那么它将被简单地带到前面。你就是这样做的
<activity
android:name=".ui.MyActivity"
android:launchMode="singleTask"/>
现在,当“D”向B调用新的意图时,B将恢复,C和D将被删除。B将不会被重新创建,它将只调用onNewIntent。假设您有4个活动,如下所示: A-->B-->C-->D 其中D是最上面的活动,A是根活动。如果您“退回”到活动B,那么您需要做两件事以避免碰到B的onCreate方法 1.)使B成为“单一任务”活动。您可以在Android清单中执行此操作。简而言之,这意味着在这个任务中只有一个B的“实例”。如果B在被调用时已经在运行,那么它将被简单地带到前面。你就是这样做的
<activity
android:name=".ui.MyActivity"
android:launchMode="singleTask"/>
现在,当“D”向B调用新的意图时,B将恢复,C和D将被删除。B不会被重新创建,它只会调用onNewIntent。您可以将活动
A
设置为一个实例,并且当您想要启动该实例时,使用标记活动\u重新排序\u到\u前台
:
在舱单中:
<activity
android:launchMode="singleInstance"
android:name="com.test.activity_a"
android:label="Activity A" />
您可以将活动
A
设置为单个实例,并在想要启动时使用标记活动\u重新排序\u到\u前端
,如下所示:
在舱单中:
<activity
android:launchMode="singleInstance"
android:name="com.test.activity_a"
android:label="Activity A" />
这取决于您的导航意图 启动模式不会对您有多大帮助,除非您只有一个活动要保存而不是重新创建,在这种情况下,您可以尝试使用
singleTask
Launch模式-它使用自己的backbackback创建新任务,并确保您的活动在该任务中只出现一次-我不建议这样做,除非你真的知道你在做什么和为什么。更多关于不同发射模式的深入见解。另外,不要使用singleInstance
——它只会在根目录下创建一个带有单个活动的新任务,您仍然需要了解如何切换到正确的任务
您可以尝试在开始和开始活动时使用Intent.FLAG\u ACTIVITY\u CLEAR\u TOP,但从后台推送的其他活动仍将被重新创建,我猜这不是您的意图
我的建议是:使用一个活动
并切换片段
(参见第节)。强烈推荐使用导航抽屉实现屏幕切换(您将体验到更少的痛苦,并看到屏幕切换速度更快!)。您将能够保存片段实例状态,并使用保存的捆绑包设置片段(更不用说您将能够在根目录下使用单个导航抽屉,而不是每个活动使用一个)
更新:使用标记活动,将活动重新排序到前端
可能会对您有所帮助,但需要更多的研究
干杯!这取决于您的导航意图 启动模式不会对您有多大帮助,除非您只有一个活动要保存而不是重新创建,在这种情况下,您可以尝试使用
singleTask
Launch模式-它使用自己的backbackback创建新任务,并确保您的活动在该任务中只出现一次-我不建议您这样做,除非您真的知道是什么t以及您为什么要这样做。要更深入地了解不同的启动模式。另外,不要使用singleInstance
-它只是在根目录下创建一个带有单个活动的新任务,您仍然需要了解如何切换到正确的任务
您可以尝试在开始和开始活动时使用Intent.FLAG\u ACTIVITY\u CLEAR\u TOP,但从后台推送的其他活动仍将被重新创建,我猜这不是您的意图
我的建议是-使用一个活动
并切换片段
(请参见第节)。强烈建议使用导航抽屉实现屏幕切换(您将体验到更少的痛苦,并看到屏幕切换更快!)。您将能够保存片段实例状态,并使用已保存的捆绑包设置片段(更不用说您将能够在根目录下使用单个导航抽屉,而不是每个活动使用一个导航抽屉)
更新:使用标记活动,将活动重新排序到前端
可能会对您有所帮助,但需要更多的研究
干杯!你的后退按钮在做什么?????我想你可以使用
fragment
而不是activity
你的后退按钮在做什么?????我想你可以使用fragment
而不是activity
你不需要singleInstance
在这里,它做什么-只创建一个带有单个activity的任务在它里面,根本没有帮助解决问题。但是!标记活动\u重新排序\u到\u前台
-使用标记看起来是个好主意(:您不需要singleInstance
这里,它所做的是-只创建一个包含单个活动的任务,根本无助于解决问题。但是!FLAG\u activity\u REORDER\u TO\u FRONT
-使用该标志看起来是个好主意(:Y