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

时间:2012-09-10 14:07:19

标签: android sharedpreferences oncreate

我有两块“验证”代码需要按特定顺序执行,但是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(),当前应用程序也会在warning()对话框之前抛出warning2()对话框,而我不会理解为什么。

是否因为第二次验证调用了一个Web服务,并且第一次验证是检查Preference存储,并且在访问Preference存储之前,Web服务调用是以某种方式完成的?

如何在第二次验证和warning2()之前强制执行第一次验证和警告()?

1 个答案:

答案 0 :(得分:1)

你确定它首先调用warning2对话框,还是你刚刚看到它?对话框不会阻止主要活动,因此它可能首先调用warning,但在此之后,它会调用warning2,这将覆盖第一个对话框。所以你会看到warning2,在它被解除之前不会看到警告,因为它直接在它下面分层。