特定の順序で実行する必要のある「検証」コードのブロックが2つありますが、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()メソッドは、ユーザーにメールアドレスを入力する必要があることを知らせるアラートダイアログボックスを作成し、[OK]をクリックすると、[設定]アクティビティを起動して、メールアドレスを入力できるようにします。
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()ダイアログボックスをスローしているので、理由がわかりません。
2番目の検証がWebサービスを呼び出し、最初の検証がPreferenceストアをチェックしていて、Preferenceストアにアクセスする前にWebサービスの呼び出しが完了しているためですか?
最初の検証とwarning()が2番目の検証とwarning2()の前に処理されるようにするにはどうすればよいですか?