diff --git a/briar-android/src/org/briarproject/android/BaseActivity.java b/briar-android/src/org/briarproject/android/BaseActivity.java index 764ef060720b60de65fe48d6c90a9b879a70b978..33d66909c879b6880e5ce0777ee477dbb455ae0b 100644 --- a/briar-android/src/org/briarproject/android/BaseActivity.java +++ b/briar-android/src/org/briarproject/android/BaseActivity.java @@ -2,6 +2,7 @@ package org.briarproject.android; import android.os.Bundle; import android.os.IBinder; +import android.support.annotation.UiThread; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.inputmethod.InputMethodManager; @@ -16,12 +17,14 @@ import static android.view.inputmethod.InputMethodManager.SHOW_FORCED; import static android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT; import static org.briarproject.android.TestingConstants.PREVENT_SCREENSHOTS; -public abstract class BaseActivity extends AppCompatActivity { +public abstract class BaseActivity extends AppCompatActivity + implements Destroyable { protected ActivityComponent activityComponent; private final List<ActivityLifecycleController> lifecycleControllers = new ArrayList<>(); + private boolean destroyed = false; public abstract void injectActivity(ActivityComponent component); @@ -78,11 +81,17 @@ public abstract class BaseActivity extends AppCompatActivity { @Override protected void onDestroy() { super.onDestroy(); + destroyed = true; for (ActivityLifecycleController alc : lifecycleControllers) { alc.onActivityDestroy(); } } + @UiThread + public boolean hasBeenDestroyed() { + return destroyed; + } + public void showSoftKeyboardForced(View view) { Object o = getSystemService(INPUT_METHOD_SERVICE); ((InputMethodManager) o).showSoftInput(view, SHOW_FORCED); diff --git a/briar-android/src/org/briarproject/android/Destroyable.java b/briar-android/src/org/briarproject/android/Destroyable.java new file mode 100644 index 0000000000000000000000000000000000000000..a9a9ef8ce5063d305c5db2a40287f6c57d3291ba --- /dev/null +++ b/briar-android/src/org/briarproject/android/Destroyable.java @@ -0,0 +1,10 @@ +package org.briarproject.android; + +import android.support.annotation.UiThread; + +interface Destroyable { + + @UiThread + boolean hasBeenDestroyed(); + +} diff --git a/briar-android/src/org/briarproject/android/blogs/RssFeedImportActivity.java b/briar-android/src/org/briarproject/android/blogs/RssFeedImportActivity.java index 62f6c4f42ae6813fe290a588dcc7b285d9ae29d1..f16663a1c447941aeb7631eb64e74b870dd40a13 100644 --- a/briar-android/src/org/briarproject/android/blogs/RssFeedImportActivity.java +++ b/briar-android/src/org/briarproject/android/blogs/RssFeedImportActivity.java @@ -151,6 +151,8 @@ public class RssFeedImportActivity extends BriarActivity { runOnUiThread(new Runnable() { @Override public void run() { + if (RssFeedImportActivity.this.hasBeenDestroyed()) return; + // hide progress bar, show publish button progressBar.setVisibility(GONE); importButton.setVisibility(VISIBLE);