我有两个“验证”代码块,需要按特定顺序执行,但是 onPostCreate() 事件中的代码在 onCreate() 事件中的代码之前触发,我怀疑它可能与首选项商店。
一些伪代码可能有助于解释:
onCreate()
{
prefs = PreferenceManager.getDefaultSharedPreferences(this);
email = prefs.getString("email", "noemail@noemail.com").toString();
if (email.equals("noemail@noemail.com"))
{
//user has not supplied email address, show alert dialog
warning();
}
}
warning() 方法只是构建一个警告对话框,让用户知道他们需要输入电子邮件地址,当他们单击“确定”时,它会启动 Preferences 活动,以便他们可以提供电子邮件地址。
onPostCreate()
{
carrier = manager.getNetworkOperatorName();
if(carrier.equals("SPRINT"))
{
//call web service to validate carrier compatibility
//if web service returns "FALSE" call warning2();
}
}
warning2() 方法与 warning() 做同样的事情 - 它构建一个警告对话框,让用户知道他们的运营商不兼容。
尽管在 onCreate() 中调用了warning(),在onPostCreate() 中调用了warning2(),但当前应用程序在warning() 对话框之前抛出了warning2() 对话框,我不明白为什么。
是不是因为第二个验证调用了一个 Web 服务,而第一个验证是检查 Preference 存储,并且 Web 服务调用在可以访问 Preference 存储之前以某种方式完成?
如何强制在第二次验证和warning2()之前处理第一次验证和警告()?