2017-09-02 11 views
0

アクティビティやフラグメントが作成されたときにデータベース(またはネットワーク)にアクセスして初期化する必要のあるフィールドがいくつかあるので、TaskQueueを使用してonCreate()内のワーカースレッドでdbアクセスを行わせるのが自然な方法です。しかし、私はonStart()でそれらを使用する必要がありますが、dbアクセスは非同期であるため、onStart()が呼び出されるとフィールドが初期化されないことがあります。私はこの種のジレンマを解決する最良の方法が何であるか疑問に思っています。フィールドの初期化中にメインスレッドの例外でデータベースアクセスを回避するように設計するにはどうすればよいですか?

onCreateのDBに直接アクセス - メインスレッド例外のDBアクセス onCreate - > onStart()の非同期アクセスDBは、初期化されたフィールドを取得しません。

答えて

0

onCreateで2番目のスレッドを開始し、結果が得られるまで読み込みUIを設定します。コールバックを取得すると、実際のUIが表示されます。あなたの周りに道はありません。サーバがあなたにそれを送付するまで、そのデータを使用することはできません。

関連する問題