我正在开发一个包含帐户,同步和内容提供商的Android应用程序。添加帐户有效,同步也会在内容提供商中保存一些数据。
现在,当用户使用设置删除帐户时,同步会停止,但数据会保留在内容提供商中。
我想删除它,但我不知道如何捕获帐户删除事件。
有AccountManager.addOnAccountsUpdatedListener()
,我已尝试将其添加到同步服务,但同步服务仅针对同步启动,然后停止。因此,无论何时在没有同步的情况下删除帐户,都无法捕获。
是否有关于如何在删除帐户时处理私人数据的最佳做法?
答案 0 :(得分:4)
首先,您应该使用以下命令将OnAccountsUpdateListener添加到AccountManager:
AccountManager mAccountMgr = AccountManager.get(getContext());
mAccountMgr.addOnAccountsUpdatedListener(new AccountsUpdateListener(), null, false);
AccountsUpdateListener是OnAccountsUpdateListener的实现类,如下所示:
private class AccountsUpdateListener implements OnAccountsUpdateListener {
@Override
public void onAccountsUpdated(Account[] accounts) {
Account newAccount = null;
for (final Account account : accounts) {
if (account.type.equals(mAccountType)) {
newAccount = account;
}
}
if (newAccount == null) {
// account removed, now you can handle your private data and remove anything you want here
}
}
}
添加帐户或删除帐户时,onAccountsUpdated已触发。这样您就可以检查您的帐户类型以查找帐户数组中的指定帐户。如果它不存在就删除了! mAccountType是您的帐户类型。例如mAccountType =“您的应用程序名称”