From 0deac1d1b636bc7c25a01928e2c1bdcebe91edee Mon Sep 17 00:00:00 2001
From: Torsten Grote <t@grobox.de>
Date: Fri, 2 Sep 2016 11:12:24 -0300
Subject: [PATCH] Only show RSS Feed Import Failed Dialog when Activity lives

---
 .../src/org/briarproject/android/BaseActivity.java    | 11 ++++++++++-
 .../src/org/briarproject/android/Destroyable.java     | 10 ++++++++++
 .../android/blogs/RssFeedImportActivity.java          |  2 ++
 3 files changed, 22 insertions(+), 1 deletion(-)
 create mode 100644 briar-android/src/org/briarproject/android/Destroyable.java

diff --git a/briar-android/src/org/briarproject/android/BaseActivity.java b/briar-android/src/org/briarproject/android/BaseActivity.java
index 764ef06072..33d66909c8 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 0000000000..a9a9ef8ce5
--- /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 62f6c4f42a..f16663a1c4 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);
-- 
GitLab