Intent
详细记录了通过Intent
清除活动堆栈。
但是,此解决方案假定您正在从一个活动转移到另一个活动。有没有办法以编程方式清除此堆栈而无需使用SQLite
启动新活动?
将此问题置于上下文中:
我的应用程序有一个与主在线数据库同步的数据库。但是,应用程序需要脱机使用,因此它在FullSyncActivity
本地存储了一个完全复制的数据库。我有一个名为Start Sync
的活动,它基本上有一个名为FullSyncActivity
的按钮。按下按钮时,同步开始(清除现有数据并从服务器重新下载),同步完成后,将再次启动新活动。
我遇到的问题是用户可能导航到Start Sync
而没有完全理解它的目的 - 因此我不想在活动打开时启动同步过程(Start Sync
按钮是需要)。但是,我无法在活动开始时(使用意图)清除活动堆栈,因为如果用户在未按下{{1}}按钮的情况下取消,则他们将无处可返回。理想情况下,一旦用户按下按钮,我想清除活动堆栈。这可能吗?
答案 0 :(得分:0)
我会使用广播Intent
来做到这一点。让每个活动为特定广播Intent
注册接收者。当用户点击Start Sync
按钮时,它应该广播此Intent
。当接收者获得Intent
时,它只会调用finish()
。通过这种方式,您可以确保在发送广播Intent
时所有活动都自行结束。