diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/token/ManageSecurityTokenContract.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/token/ManageSecurityTokenContract.java index f5f481930..8fe8d4333 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/token/ManageSecurityTokenContract.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/token/ManageSecurityTokenContract.java @@ -30,6 +30,7 @@ import org.sufficientlysecure.keychain.ui.token.ManageSecurityTokenFragment.Stat class ManageSecurityTokenContract { interface ManageSecurityTokenMvpPresenter { void setView(ManageSecurityTokenMvpView createSecurityTokenImportFragment); + void detach(); void onActivityCreated(); void onClickRetry(); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/token/ManageSecurityTokenFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/token/ManageSecurityTokenFragment.java index aff9e9810..a92541f6c 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/token/ManageSecurityTokenFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/token/ManageSecurityTokenFragment.java @@ -145,7 +145,7 @@ public class ManageSecurityTokenFragment extends Fragment implements ManageSecur public void onDestroyView() { super.onDestroyView(); - presenter.setView(null); + presenter.detach(); } @Override diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/token/ManageSecurityTokenPresenter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/token/ManageSecurityTokenPresenter.java index f51fee3c5..d8f514fae 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/token/ManageSecurityTokenPresenter.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/token/ManageSecurityTokenPresenter.java @@ -81,6 +81,16 @@ class ManageSecurityTokenPresenter implements ManageSecurityTokenMvpPresenter { this.view = view; } + @Override + public void detach() { + this.view = null; + + loaderManager.destroyLoader(LOADER_LOCAL); + loaderManager.destroyLoader(LOADER_URI); + loaderManager.destroyLoader(LOADER_KEYSERVER); + loaderManager.destroyLoader(LOADER_CONTENT_URI); + } + @Override public void onActivityCreated() { if (!checkedKeyStatus || !searchedLocally || !searchedAtUri || !searchedKeyservers) { @@ -143,6 +153,10 @@ class ManageSecurityTokenPresenter implements ManageSecurityTokenMvpPresenter { new Handler().postDelayed(new Runnable() { @Override public void run() { + if (view == null) { + return; + } + performKeyCheck(); } }, 1000); @@ -220,10 +234,6 @@ class ManageSecurityTokenPresenter implements ManageSecurityTokenMvpPresenter { @Override public void onLoadFinished(Loader loader, KeyRetrievalResult data) { - if (view == null) { - return; - } - switch (loader.getId()) { case LOADER_LOCAL: { searchedLocally = true;