aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2012-08-07 17:52:10 +0200
committerTobias Brunner <tobias@strongswan.org>2012-08-13 11:00:26 +0200
commit8db37772f5fe4dec82a8b176f5ca6de3a043a277 (patch)
treebadce26adf0bd3117cf47c3a51c4a4c6f46b5bc8 /src
parentb21979f12f725a87f250c7c9f12d22e705e9e5e9 (diff)
downloadstrongswan-8db37772f5fe4dec82a8b176f5ca6de3a043a277.tar.bz2
strongswan-8db37772f5fe4dec82a8b176f5ca6de3a043a277.tar.xz
Simplified asynchronous loading of CA certificates in MainActivity
Diffstat (limited to 'src')
-rw-r--r--src/frontends/android/src/org/strongswan/android/ui/MainActivity.java61
1 files changed, 30 insertions, 31 deletions
diff --git a/src/frontends/android/src/org/strongswan/android/ui/MainActivity.java b/src/frontends/android/src/org/strongswan/android/ui/MainActivity.java
index 65131fa45..35f8c653f 100644
--- a/src/frontends/android/src/org/strongswan/android/ui/MainActivity.java
+++ b/src/frontends/android/src/org/strongswan/android/ui/MainActivity.java
@@ -28,6 +28,7 @@ import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.net.VpnService;
+import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
@@ -49,22 +50,8 @@ public class MainActivity extends Activity implements OnVpnProfileSelectedListen
ActionBar bar = getActionBar();
bar.setDisplayShowTitleEnabled(false);
- /* load CA certificates in a background thread */
- setProgressBarIndeterminateVisibility(true);
- new Thread(new Runnable() {
- @Override
- public void run()
- {
- TrustedCertificateManager.getInstance().load();
- runOnUiThread(new Runnable() {
- @Override
- public void run()
- {
- setProgressBarIndeterminateVisibility(false);
- }
- });
- }
- }).start();
+ /* load CA certificates in a background task */
+ new CertificateLoadTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, false);
}
@Override
@@ -81,21 +68,7 @@ public class MainActivity extends Activity implements OnVpnProfileSelectedListen
switch (item.getItemId())
{
case R.id.menu_reload_certs:
- setProgressBarIndeterminateVisibility(true);
- new Thread(new Runnable() {
- @Override
- public void run()
- {
- TrustedCertificateManager.getInstance().reload();
- runOnUiThread(new Runnable() {
- @Override
- public void run()
- {
- setProgressBarIndeterminateVisibility(false);
- }
- });
- }
- }).start();
+ new CertificateLoadTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, true);
return true;
default:
return super.onOptionsItemSelected(item);
@@ -143,4 +116,30 @@ public class MainActivity extends Activity implements OnVpnProfileSelectedListen
activeProfile = profile;
prepareVpnService();
}
+
+ /**
+ * Class that loads or reloads the cached CA certificates.
+ */
+ private class CertificateLoadTask extends AsyncTask<Boolean, Void, TrustedCertificateManager>
+ {
+ @Override
+ protected void onPreExecute()
+ {
+ setProgressBarIndeterminateVisibility(true);
+ }
+ @Override
+ protected TrustedCertificateManager doInBackground(Boolean... params)
+ {
+ if (params.length > 0 && params[0])
+ { /* force a reload of the certificates */
+ return TrustedCertificateManager.getInstance().reload();
+ }
+ return TrustedCertificateManager.getInstance().load();
+ }
+ @Override
+ protected void onPostExecute(TrustedCertificateManager result)
+ {
+ setProgressBarIndeterminateVisibility(false);
+ }
+ }
}