summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/accounts/RemoveAccountPreferenceController.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings/accounts/RemoveAccountPreferenceController.java')
-rw-r--r--src/com/android/settings/accounts/RemoveAccountPreferenceController.java44
1 files changed, 21 insertions, 23 deletions
diff --git a/src/com/android/settings/accounts/RemoveAccountPreferenceController.java b/src/com/android/settings/accounts/RemoveAccountPreferenceController.java
index 938606b19d..1bc30d0313 100644
--- a/src/com/android/settings/accounts/RemoveAccountPreferenceController.java
+++ b/src/com/android/settings/accounts/RemoveAccountPreferenceController.java
@@ -17,8 +17,6 @@ package com.android.settings.accounts;
import android.accounts.Account;
import android.accounts.AccountManager;
-import android.accounts.AccountManagerCallback;
-import android.accounts.AccountManagerFuture;
import android.accounts.AuthenticatorException;
import android.accounts.OperationCanceledException;
import android.app.Activity;
@@ -30,6 +28,7 @@ import android.content.Intent;
import android.os.Bundle;
import android.os.UserHandle;
import android.os.UserManager;
+import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
@@ -153,28 +152,27 @@ public class RemoveAccountPreferenceController extends AbstractPreferenceControl
public void onClick(DialogInterface dialog, int which) {
Activity activity = getTargetFragment().getActivity();
AccountManager.get(activity).removeAccountAsUser(mAccount, activity,
- new AccountManagerCallback<Bundle>() {
- @Override
- public void run(AccountManagerFuture<Bundle> future) {
- boolean failed = true;
- try {
- if (future.getResult()
- .getBoolean(AccountManager.KEY_BOOLEAN_RESULT)) {
- failed = false;
- }
- } catch (OperationCanceledException e) {
- // handled below
- } catch (IOException e) {
- // handled below
- } catch (AuthenticatorException e) {
- // handled below
- }
- final Activity activity = getTargetFragment().getActivity();
- if (failed && activity != null && !activity.isFinishing()) {
- RemoveAccountFailureDialog.show(getTargetFragment());
- } else {
- activity.finish();
+ future -> {
+ final Activity targetActivity = getTargetFragment().getActivity();
+ if (targetActivity == null || targetActivity.isFinishing()) {
+ Log.w(TAG, "Activity is no longer alive, skipping results");
+ return;
+ }
+ boolean failed = true;
+ try {
+ if (future.getResult()
+ .getBoolean(AccountManager.KEY_BOOLEAN_RESULT)) {
+ failed = false;
}
+ } catch (OperationCanceledException
+ | IOException
+ | AuthenticatorException e) {
+ // handled below
+ }
+ if (failed) {
+ RemoveAccountFailureDialog.show(getTargetFragment());
+ } else {
+ targetActivity.finish();
}
}, null, mUserHandle);
}