From ed842f781af951d81ac7ad3f2d1c3fa6eb63eb21 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Fri, 22 Mar 2019 13:36:54 +0000 Subject: [PATCH] Don't create extra activity instances from splash screen. --- .../android/login/OpenDatabaseActivity.java | 16 +--------- .../android/splash/SplashScreenActivity.java | 30 +++++++++++++------ 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/login/OpenDatabaseActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/login/OpenDatabaseActivity.java index 2065080bb..55aa3a8e7 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/login/OpenDatabaseActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/login/OpenDatabaseActivity.java @@ -16,14 +16,10 @@ import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.briar.R; import org.briarproject.briar.android.activity.ActivityComponent; import org.briarproject.briar.android.activity.BriarActivity; -import org.briarproject.briar.android.logout.HideUiActivity; import org.briarproject.briar.android.navdrawer.NavDrawerActivity; import javax.inject.Inject; -import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK; -import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP; -import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static org.briarproject.bramble.api.lifecycle.LifecycleManager.LifecycleState.COMPACTING_DATABASE; import static org.briarproject.bramble.api.lifecycle.LifecycleManager.LifecycleState.MIGRATING_DATABASE; import static org.briarproject.bramble.api.lifecycle.LifecycleManager.LifecycleState.STARTING_SERVICES; @@ -73,14 +69,6 @@ public class OpenDatabaseActivity extends BriarActivity eventBus.removeListener(this); } - @Override - public void onBackPressed() { - Intent i = new Intent(this, HideUiActivity.class); - i.addFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TASK); - startActivity(i); - supportFinishAfterTransition(); - } - @Override public void eventOccurred(Event e) { if (e instanceof LifecycleEvent) { @@ -109,9 +97,7 @@ public class OpenDatabaseActivity extends BriarActivity } private void finishAndStartApp() { - Intent i = new Intent(this, NavDrawerActivity.class); - i.setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TOP); - startActivity(i); + startActivity(new Intent(this, NavDrawerActivity.class)); supportFinishAfterTransition(); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/splash/SplashScreenActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/splash/SplashScreenActivity.java index cf890f89e..5b80d3cc3 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/splash/SplashScreenActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/splash/SplashScreenActivity.java @@ -1,5 +1,6 @@ package org.briarproject.briar.android.splash; +import android.app.Activity; import android.content.Intent; import android.os.Build; import android.os.Bundle; @@ -8,6 +9,8 @@ import android.support.v7.preference.PreferenceManager; import android.transition.Fade; import org.briarproject.bramble.api.account.AccountManager; +import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; +import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.bramble.api.system.AndroidExecutor; import org.briarproject.briar.R; import org.briarproject.briar.android.activity.ActivityComponent; @@ -19,10 +22,15 @@ import org.briarproject.briar.api.android.LockManager; import java.util.logging.Logger; +import javax.annotation.Nullable; import javax.inject.Inject; +import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP; +import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static org.briarproject.briar.android.TestingConstants.EXPIRY_DATE; +@MethodsNotNullByDefault +@ParametersNotNullByDefault public class SplashScreenActivity extends BaseActivity { private static final Logger LOG = @@ -36,7 +44,7 @@ public class SplashScreenActivity extends BaseActivity { protected AndroidExecutor androidExecutor; @Override - public void onCreate(Bundle state) { + public void onCreate(@Nullable Bundle state) { super.onCreate(state); if (Build.VERSION.SDK_INT >= 21) { @@ -48,16 +56,14 @@ public class SplashScreenActivity extends BaseActivity { setContentView(R.layout.splash); if (accountManager.hasDatabaseKey()) { - Intent i; if (lockManager.isLocked()) { // The database needs to be opened for the app to be locked. // Start main activity right away. It will open UnlockActivity. // Otherwise, we would end up with two screen unlock inputs. - i = new Intent(this, NavDrawerActivity.class); + startNextActivity(NavDrawerActivity.class); } else { - i = new Intent(this, OpenDatabaseActivity.class); + startNextActivity(OpenDatabaseActivity.class); } - startActivity(i); finish(); } else { new Handler().postDelayed(() -> { @@ -72,22 +78,28 @@ public class SplashScreenActivity extends BaseActivity { component.inject(this); } - protected void startNextActivity() { + private void startNextActivity() { if (System.currentTimeMillis() >= EXPIRY_DATE) { LOG.info("Expired"); - startActivity(new Intent(this, ExpiredActivity.class)); + startNextActivity(ExpiredActivity.class); } else { if (accountManager.accountExists()) { LOG.info("Account exists"); - startActivity(new Intent(this, OpenDatabaseActivity.class)); + startNextActivity(OpenDatabaseActivity.class); } else { LOG.info("Account does not exist"); accountManager.deleteAccount(); - startActivity(new Intent(this, SetupActivity.class)); + startNextActivity(SetupActivity.class); } } } + private void startNextActivity(Class activityClass) { + Intent i = new Intent(this, activityClass); + i.addFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TOP); + startActivity(i); + } + private void setPreferencesDefaults() { androidExecutor.runOnBackgroundThread(() -> PreferenceManager.setDefaultValues(SplashScreenActivity.this,