diff --git a/app/src/main/java/uci/localproxy/proxyscreen/ProxyContract.java b/app/src/main/java/uci/localproxy/proxyscreen/ProxyContract.java index ae56972..4cc56c2 100755 --- a/app/src/main/java/uci/localproxy/proxyscreen/ProxyContract.java +++ b/app/src/main/java/uci/localproxy/proxyscreen/ProxyContract.java @@ -25,6 +25,8 @@ void startProxyFromHelpDialog(@NonNull String user, @NonNull String pass, @NonNu @NonNull String localPort, @NonNull boolean rememberPass, @NonNull boolean setGlobalProxy, @NonNull boolean dontShowAgain); + void stopCredentialCheckTask(); + void stopProxy(); void onDestroy(); diff --git a/app/src/main/java/uci/localproxy/proxyscreen/ProxyFragment.java b/app/src/main/java/uci/localproxy/proxyscreen/ProxyFragment.java index fb5c8cd..5335a7b 100755 --- a/app/src/main/java/uci/localproxy/proxyscreen/ProxyFragment.java +++ b/app/src/main/java/uci/localproxy/proxyscreen/ProxyFragment.java @@ -407,10 +407,16 @@ public void startWifiConfActivity() { public void showProgressDialog(boolean show) { if (show) { mProgressDialog.setMessage(getString(R.string.proxy_credentials_check_message)); - mProgressDialog.setCancelable(false); + mProgressDialog.setOnDismissListener(new DialogInterface.OnDismissListener() { + @Override + public void onDismiss(DialogInterface dialogInterface) { + mPresenter.stopCredentialCheckTask(); + } + }); mProgressDialog.show(); } else { + mProgressDialog.setOnDismissListener(null); mProgressDialog.dismiss(); } } diff --git a/app/src/main/java/uci/localproxy/proxyscreen/ProxyPresenter.java b/app/src/main/java/uci/localproxy/proxyscreen/ProxyPresenter.java index ddb5ae7..08d86ac 100755 --- a/app/src/main/java/uci/localproxy/proxyscreen/ProxyPresenter.java +++ b/app/src/main/java/uci/localproxy/proxyscreen/ProxyPresenter.java @@ -65,6 +65,8 @@ public class ProxyPresenter implements ProxyContract.Presenter { @NonNull private AppPreferencesHelper mPrefHelper; + private CredentialsCheckTask credentialsCheckTask; + public ProxyPresenter(@NonNull ProxyContract.View proxyView, @NonNull AppPreferencesHelper prefHelper) { @@ -137,7 +139,7 @@ public void onProfileLoaded(Profile profile) { user = username.substring(backSlashPos + 1, username.length()); } - CredentialsCheckTask task = new CredentialsCheckTask( + credentialsCheckTask = new CredentialsCheckTask( user, password, profile.getHost(), @@ -148,7 +150,7 @@ public void onProfileLoaded(Profile profile) { setGlobalProxy ); - task.execute(); + credentialsCheckTask.execute(); } @@ -159,6 +161,13 @@ public void onDataNoAvailable() { }); } + @Override + public void stopCredentialCheckTask() { + if (credentialsCheckTask != null){ + credentialsCheckTask.cancel(true); + } + } + @Override public void stopProxy() { mProxyView.stopProxyService();