【发布时间】:2010-04-22 10:56:54
【问题描述】:
我有以下问题。
当服务从 API 下载数据时,我有一个显示进度条的活动。 我希望当我按 Home 并重新启动我的程序时,该活动不是第一个被调用但它在堆栈中的活动被恢复,以便继续显示进度。
我已阅读有关活动生命周期的信息,但我没有找到明确的解决方案。
如果我在显示进度条的活动中,并且我按下一个将我带到另一个活动的按钮,当我返回时,我可以恢复旧活动而不是启动一个新活动吗?
有人帮助我吗?
谢谢
【问题讨论】:
我有以下问题。
当服务从 API 下载数据时,我有一个显示进度条的活动。 我希望当我按 Home 并重新启动我的程序时,该活动不是第一个被调用但它在堆栈中的活动被恢复,以便继续显示进度。
我已阅读有关活动生命周期的信息,但我没有找到明确的解决方案。
如果我在显示进度条的活动中,并且我按下一个将我带到另一个活动的按钮,当我返回时,我可以恢复旧活动而不是启动一个新活动吗?
有人帮助我吗?
谢谢
【问题讨论】:
问题是按下主页按钮会清除整个活动堆栈。这意味着不可能回到活动,甚至不确定活动是否仍然存在。
如果这是一个用户感兴趣的进度并且它仍在运行,您可以显示一个通知栏图标,直到进度完成。我认为您可以指定单击通知栏的特殊意图并使用您的活动过滤此意图。这样你就可以回到活动中了。但是您仍然面临活动被保存并且没有参考执行工作的后台线程的问题。
如果您的 Activity 已离开堆栈,则会调用其完成方法。您以后不应尝试重用此活动。最好的方法是想出一种方法,可以在以后保存和恢复活动的整个状态。要恢复对执行工作的后台线程的引用,您可以子类化 application 类并将对正在运行的任务的引用保存在子类中。
【讨论】: