我有两个需要按特定顺序执行的“验证”代码块,但是onpostreate()事件中的代码在oncreate()事件中的代码之前触发,我怀疑这可能与首选项存储有关。
一些伪代码可能有助于解释:
onCreate()
{
prefs = PreferenceManager.getDefaultSharedPreferences(this);
email = prefs.getString("email", "[email protected]").toString();
if (email.equals("[email protected]"))
{
//user has not supplied email address, show alert dialog
warning();
}
}
warning()方法只构建一个警告对话框,让用户知道他们需要输入电子邮件地址,当他们单击“确定”时,它会启动“首选项”活动,以便他们可以提供电子邮件地址。
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(),在onpostreate()中调用warning2(),但目前应用程序正在warning2()对话框之前抛出warning2()对话框,我不明白为什么。
是不是因为第二个验证调用了一个web服务,而第一个验证正在检查首选项存储,并且web服务调用以某种方式在访问首选项存储之前完成?
如何强制第一个验证和warning()在第二个验证和warning2()之前处理?
最佳答案
你确定它是先调用warning2对话框,还是先看到它?对话框不会阻塞主活动,因此它可能首先调用warning
,但紧接着,它调用warning2
,这将覆盖第一个对话框。所以你会看到warning2,直到它被解除,才看到warning2,因为它是在它的正下方分层的。
关于android - Android-在onCreate()代码之前触发onPostCreate()代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12353412/