prevent crashes after detach in manage security token fragment

This commit is contained in:
Vincent Breitmoser
2017-09-27 20:14:58 +02:00
parent a155201400
commit 4a0c61a478
3 changed files with 16 additions and 5 deletions

View File

@@ -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();

View File

@@ -145,7 +145,7 @@ public class ManageSecurityTokenFragment extends Fragment implements ManageSecur
public void onDestroyView() {
super.onDestroyView();
presenter.setView(null);
presenter.detach();
}
@Override

View File

@@ -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<KeyRetrievalResult> loader, KeyRetrievalResult data) {
if (view == null) {
return;
}
switch (loader.getId()) {
case LOADER_LOCAL: {
searchedLocally = true;