以编程方式清除活动堆栈

时间:2014-07-09 08:04:48

标签: android android-intent android-activity

Intent详细记录了通过Intent清除活动堆栈。

但是,此解决方案假定您正在从一个活动转移到另一个活动。有没有办法以编程方式清除此堆栈而无需使用SQLite启动新活动?

将此问题置于上下文中:

我的应用程序有一个与主在线数据库同步的数据库。但是,应用程序需要脱机使用,因此它在FullSyncActivity本地存储了一个完全复制的数据库。我有一个名为Start Sync的活动,它基本上有一个名为FullSyncActivity的按钮。按下按钮时,同步开始(清除现有数据并从服务器重新下载),同步完成后,将再次启动新活动。

我遇到的问题是用户可能导航到Start Sync而没有完全理解它的目的 - 因此我不想在活动打开时启动同步过程(Start Sync按钮是需要)。但是,我无法在活动开始时(使用意图)清除活动堆栈,因为如果用户在未按下{{1}}按钮的情况下取消,则他们将无处可返回。理想情况下,一旦用户按下按钮,我想清除活动堆栈。这可能吗?

1 个答案:

答案 0 :(得分:0)

我会使用广播Intent来做到这一点。让每个活动为特定广播Intent注册接收者。当用户点击Start Sync按钮时,它应该广播此Intent。当接收者获得Intent时,它只会调用finish()。通过这种方式,您可以确保在发送广播Intent时所有活动都自行结束。