【发布时间】:2012-05-30 23:37:17
【问题描述】:
正如问题标题所说 - 我需要知道“删除”/销毁/完成位于堆栈中间某处且当前处于暂停模式的活动的最佳方法是什么(不是特定实例 - 而是特定的派生类)。
例如:
如果堆栈的当前状态如下所示:
ActivityD <-- top of the stack, currently forground
ActivityC
ActivityA
ActivityC
ActivityA
“清除”所有 ActivityC 实例的请求将导致堆栈如下所示:
ActivityD <-- still top of the stack, currently forground.
ActivityA
ActivityA
我不想这样做取决于活动启动模式或意图标志。我知道如何使用它们以及它们的好处。
我目前知道我可以做的是发送广播,所有需要销毁的活动都会收听,并在收到广播时调用 Activity.finish()。
这是可行的,但即使在他们的托管活动暂停时,它也需要注册接收者,而且我不确定从暂停的活动中调用“finish()”方法是否正确。
从恢复的活动中调用 Activity.finish() 方法是否正确?
在OnCreate()方法中注册receiver,并在OnDestroy()中注销它是否正确?
从恢复的活动中处理广播是否正确,并从那时起调用finish()?
是否有“Android 方式”或某些我不知道的 API 可以从堆栈中清除活动?
提前致谢
【问题讨论】:
-
这是一个非常古老的问题,但我最近也在想。特别是从暂停的活动中调用的“finish()”方法是正确的做法”部分。您的意思是“来自
paused活动的 Activity.finish() 方法吗?”而不是resumed?
标签: android android-activity broadcastreceiver activity-finish activity-stack