From: Tobias Brunner Date: Tue, 7 Aug 2012 15:52:10 +0000 (+0200) Subject: Simplified asynchronous loading of CA certificates in MainActivity X-Git-Tag: 5.0.1~210^2~57 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8db37772f5fe4dec82a8b176f5ca6de3a043a277;p=thirdparty%2Fstrongswan.git Simplified asynchronous loading of CA certificates in MainActivity --- 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 65131fa45c..35f8c653fc 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 + { + @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); + } + } }