From d171caa7a25cb1a574b67c0eff8afd8fb7f84471 Mon Sep 17 00:00:00 2001 From: dosiecki Date: Tue, 3 Nov 2015 15:55:09 -0800 Subject: [PATCH] Rework app launch to ensure DB isn't accessed before ready. --- clients/android/NewsBlur/AndroidManifest.xml | 16 +++++-- .../NewsBlur/res/layout/activity_init.xml | 6 +++ .../com/newsblur/activity/InitActivity.java | 46 +++++++++++++++++++ .../src/com/newsblur/activity/Login.java | 21 --------- 4 files changed, 63 insertions(+), 26 deletions(-) create mode 100644 clients/android/NewsBlur/res/layout/activity_init.xml create mode 100644 clients/android/NewsBlur/src/com/newsblur/activity/InitActivity.java diff --git a/clients/android/NewsBlur/AndroidManifest.xml b/clients/android/NewsBlur/AndroidManifest.xml index c79ebd97d..922f8a42a 100644 --- a/clients/android/NewsBlur/AndroidManifest.xml +++ b/clients/android/NewsBlur/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="109" + android:versionName="4.6.0b3" > + android:noHistory="true"> + + + + + + diff --git a/clients/android/NewsBlur/src/com/newsblur/activity/InitActivity.java b/clients/android/NewsBlur/src/com/newsblur/activity/InitActivity.java new file mode 100644 index 000000000..6de70a650 --- /dev/null +++ b/clients/android/NewsBlur/src/com/newsblur/activity/InitActivity.java @@ -0,0 +1,46 @@ +package com.newsblur.activity; + +import android.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.app.Activity; +import android.view.Window; + +import com.newsblur.R; +import com.newsblur.util.FeedUtils; +import com.newsblur.util.PrefConstants; +import com.newsblur.util.PrefsUtils; + +/** + * The very first activity we launch. Checks to see if there is a user logged in yet and then + * either loads the Main UI or a Login screen as needed. Also responsible for warming up the + * DB connection used by all other Activities. + */ +public class InitActivity extends Activity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_init); + + // this is the first Activity launched; use it to init the global singletons in FeedUtils + FeedUtils.offerInitContext(this); + + // see if a user is already logged in; if so, jump to the Main activity + preferenceCheck(); + } + + private void preferenceCheck() { + final SharedPreferences preferences = getSharedPreferences(PrefConstants.PREFERENCES, Context.MODE_PRIVATE); + if (preferences.getString(PrefConstants.PREF_COOKIE, null) != null) { + Intent mainIntent = new Intent(this, Main.class); + startActivity(mainIntent); + } else { + Intent loginIntent = new Intent(this, Login.class); + startActivity(loginIntent); + } + } + + +} diff --git a/clients/android/NewsBlur/src/com/newsblur/activity/Login.java b/clients/android/NewsBlur/src/com/newsblur/activity/Login.java index 82966d7a8..18171bb32 100644 --- a/clients/android/NewsBlur/src/com/newsblur/activity/Login.java +++ b/clients/android/NewsBlur/src/com/newsblur/activity/Login.java @@ -1,8 +1,5 @@ package com.newsblur.activity; -import android.content.Context; -import android.content.Intent; -import android.content.SharedPreferences; import android.os.Bundle; import android.app.Activity; import android.app.FragmentManager; @@ -11,9 +8,6 @@ import android.view.Window; import com.newsblur.R; import com.newsblur.fragment.LoginRegisterFragment; -import com.newsblur.util.FeedUtils; -import com.newsblur.util.PrefConstants; -import com.newsblur.util.PrefsUtils; public class Login extends Activity { @@ -21,12 +15,6 @@ public class Login extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - // this is the first Activity launched; use it to init the global singletons in FeedUtils - FeedUtils.offerInitContext(this); - - // see if a user is already logged in; if so, jump to the Main activity - preferenceCheck(); - requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_login); FragmentManager fragmentManager = getFragmentManager(); @@ -39,13 +27,4 @@ public class Login extends Activity { } } - private void preferenceCheck() { - final SharedPreferences preferences = getSharedPreferences(PrefConstants.PREFERENCES, Context.MODE_PRIVATE); - if (preferences.getString(PrefConstants.PREF_COOKIE, null) != null) { - final Intent mainIntent = new Intent(this, Main.class); - startActivity(mainIntent); - } - } - - }