在将此问题放在此处之前,我已经浏览了许多类似的链接,但找不到合适的解决方案。
我的要求如下: 我使用Android的AccountManager来维护用户帐户。可能存在我的应用处于后台的情况,用户转到设置 - >帐户 - >删除我的应用程序的帐户。在这种情况下,我需要删除用户数据(即使Application未运行,也需要完成)。如果Application在后台运行,还需要清除活动堆栈。当用户返回我的应用程序时,它应该像新的启动一样打开。
我已在Manifest中声明BroadcastReceiver以接收AccountManager更新更新。
<receiver android:name=".MyBroadcastReceiver" android:exported="true">
<intent-filter>
<action android:name="android.accounts.LOGIN_ACCOUNTS_CHANGED"/>
</intent-filter>
</receiver>
现在,当调用MyBroadcastReceiver的onReceive时,我已经完成了与帐户相关的处理。现在我想删除我的应用程序的Activity堆栈。因此,当用户恢复应用程序时,不应重新打开上次打开的活动,因为它现在可能无关紧要。
我发现的所有解决方案都在Activity中使用了finish(),但在这种情况下,我必须从框架调用的Broadcast接收器完成我的App活动。