Android-onPostCreate()代码在onCreate()代码之前触发

Android-onPostCreate()代码在onCreate()代码之前触发,android,sharedpreferences,oncreate,Android,Sharedpreferences,Oncreate,我有两块“验证”代码需要按特定顺序执行,但是onPostCreate()事件中的代码在onCreate()事件中的代码之前触发,我怀疑这可能与首选项存储有关 一些伪代码可能有助于解释: onCreate() { prefs = PreferenceManager.getDefaultSharedPreferences(this); email = prefs.getString("email", "noemail@noemail.com").toString(); if (email

我有两块“验证”代码需要按特定顺序执行,但是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()方法只是构建一个警报对话框,让用户知道他们需要输入电子邮件地址,当他们单击“确定”时,它会启动“首选项”活动,以便他们可以提供电子邮件地址

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(),但目前应用程序在warning2()对话框之前抛出warning2()对话框,我不明白为什么

是否因为第二次验证调用了一个web服务,而第一次验证是检查首选项存储,并且web服务调用在访问首选项存储之前以某种方式完成了


如何强制第一次验证和警告()在第二次验证和警告2()之前处理?

您确定它是先调用警告2对话框,还是先看到它?对话框不会阻止主活动,因此它可能首先调用
警告
,但紧接着调用
警告2
,这将覆盖第一个对话框。所以你会看到警告2,直到它被解除,你才会看到警告,因为它就在警告2的正下方。

啊,说得对。我假设如果先调用warning(),则该对话框将以模态方式显示,这样在处理第一个对话框之前,warning2()对话框将无法显示。谢谢,这就是发生的情况。Warning2()的调用顺序正确,只是在Warning2()之上分层。我早该抓到的。再次感谢!