diff --git a/briar-android/src/main/java/org/briarproject/briar/android/activity/BriarActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/activity/BriarActivity.java
index 292325ae885c9606bc408998b1f3d7f4d1361642..6335b6b728d9782724a530111858bb30a1e84ad1 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/activity/BriarActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/activity/BriarActivity.java
@@ -62,11 +62,10 @@ public abstract class BriarActivity extends BaseActivity {
 	@Override
 	protected void onActivityResult(int request, int result, Intent data) {
 		super.onActivityResult(request, result, data);
-		if (request == REQUEST_PASSWORD && result == RESULT_OK) {
-			// PasswordActivity finishes when password was entered correctly.
-			// When back button is pressed there, it will bring itself back,
-			// so that we never arrive here with a result that is not OK.
-			briarController.startAndBindService();
+		if (request == REQUEST_PASSWORD) {
+			// The result can be RESULT_CANCELED if there's no account
+			if (result == RESULT_OK) briarController.startAndBindService();
+			else finish();
 		} else if (request == REQUEST_UNLOCK && result != RESULT_OK) {
 			// We arrive here, if the user presses 'back'
 			// in the Keyguard unlock screen, because UnlockActivity finishes.
@@ -81,13 +80,16 @@ public abstract class BriarActivity extends BaseActivity {
 	@Override
 	public void onResume() {
 		super.onResume();
-		if (!briarController.accountSignedIn()) {
+		if (!briarController.accountSignedIn() && !isFinishing()) {
+			// Also check that the activity isn't finishing already.
+			// This is possible if we finished in onActivityResult().
+			// Launching another PasswordActivity would cause a loop.
 			Intent i = new Intent(this, PasswordActivity.class);
 			startActivityForResult(i, REQUEST_PASSWORD);
 		} else if (lockManager.isLocked() && !isFinishing()) {
 			// Also check that the activity isn't finishing already.
-			// This is possible if finishing in onActivityResult().
-			// Failure to do this check would cause an UnlockActivity loop.
+			// This is possible if we finished in onActivityResult().
+			// Lauching another UnlockActivity would cause a loop.
 			Intent i = new Intent(this, UnlockActivity.class);
 			startActivityForResult(i, REQUEST_UNLOCK);
 		} else if (SDK_INT >= 23) {
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordActivity.java
index 629d0fc97d30d391a13df175396030ac272bfcc2..09dafb060eb6c9021fbd88c0350e5e3818998bfb 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordActivity.java
@@ -23,8 +23,6 @@ import org.briarproject.briar.api.android.AndroidNotificationManager;
 
 import javax.inject.Inject;
 
-import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK;
-import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
 import static android.view.View.INVISIBLE;
 import static android.view.View.VISIBLE;
 
@@ -54,8 +52,8 @@ public class PasswordActivity extends BaseActivity {
 		overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
 
 		if (!accountManager.accountExists()) {
-			// TODO: Finish instead of deleting account?
-			deleteAccount();
+			setResult(RESULT_CANCELED);
+			finish();
 			return;
 		}
 
@@ -114,10 +112,9 @@ public class PasswordActivity extends BaseActivity {
 
 	private void deleteAccount() {
 		accountManager.deleteAccount();
+		startActivity(new Intent(this, SetupActivity.class));
 		setResult(RESULT_CANCELED);
-		Intent i = new Intent(this, SetupActivity.class);
-		i.setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TASK);
-		startActivity(i);
+		finish();
 	}
 
 	public void onSignInClick(View v) {