我在我的Activity
的onCreate
上有我的代码。SharedPreferences /变量未按顺序读取
SharedPreferences globalPreferences = getSharedPreferences(PREF_KEY, Context.MODE_PRIVATE);
boolean hasFinishedIntroduction = globalPreferences.getBoolean(PREF_FINISHED_INTRO), false);
Log.d(TAG, "Has finished introduction: " + hasFinishedIntroduction);
if(!hasFinishedIntroduction){
startActivity(new Intent(this, IntroductionActivity.class));
finish();
}
boolean hasLoggedInUsingFacebook = globalPreferences.getBoolean(PREF_LOGGED_IN_FACEBOOK), false);
boolean hasLoggedInUsingGoogle = globalPreferences.getBoolean(PREF_LOGGED_IN_GOOGLE), false);
Log.d(TAG, "Has logged in using Facebook: " + hasLoggedInUsingFacebook);
Log.d(TAG, "Has logged in using Google: " + hasLoggedInUsingGoogle);
if(!hasLoggedInUsingFacebook && !hasLoggedInUsingGoogle){
startActivity(new Intent(this, SocialLoginActivity.class));
finish();
}
我的问题是,每次我跑我的应用程序时(干净安装),我的应用程序开始我的SocialLoginActivity
是应该被第二检查。我的第一个检查被忽略(hasFinishedIntroduction
)。 当然,我试着用Log
消息调试它,但所有工作正常(至少值)。
10-06 03:15:09.907 12969-12969/com.sample.foo D/Bar: Has finished introduction: false
10-06 03:15:09.937 12969-12969/com.sample.foo D/Bar: Has logged in using Facebook: false
10-06 03:15:09.937 12969-12969/com.sample.foo D/Bar: Has logged in using Google: false
显然,应用程序可以读取hasFinishedIntroduction
的false
但它忽略了它,并拒绝执行什么是我的第一if
语句中。
令人惊讶的是,在我登录我的应用程序后,用户将被带回Activity
,然后我的hasFinishedIntroduction
的值将被执行并将开始Activity
我指示它开始。
谢谢你的帮助。
编辑
我忘了,这里要注意的是,我也把一些Log.d()
在我IntroductionActivity
和SocialLoginActivity
的onCreate
但它确实表明,它并没有真正调用IntroductionActivity
可言。
感谢您的答复。不幸的是,它并没有为我工作。我忘了注意,我还在其他'Activities'上放了'Log.d()'来判断它们是否被调用,但是它确实直接到了我的'SocialLoginActivity'。 – CodeHarmonics
你可以在'hasFinishedIntroduction'的if代码块中放入日志,看它是否得到执行。你也可以试着按回来,看到'SociaLoginActivity',看看'IntroductionActivity'是否在后台 – pgiitu
哦,我以前没有尝试过。它看起来像在'if'块(它打印我的调试信息),但从来没有启动我的'IntroductionActivity',并且从'if'块去掉,并且执行另一个'if'。让我感到困惑的是,在进入我的SocialLoginActivity后,它执行''startActivity()'到'IntroductionActivity'并且第二次返回到这个'Activity'。 – CodeHarmonics