問題は、Firebaseからデータを初期化して取得することから得られますが、私はこれを擬似に変換して、使い慣れていない人も貢献できるようにします。問題がにClassAとClassBのの呼び出しがタイムラインではかなり接近していると私はmyRemoteDBClassInstanceの初期化の前または後にasyncFetchを呼び出すために取得する場合、私は知らないということです `ここで正しいアーキテクチャ設計は何ですか?
//Given the following API (from Firebase)
MyRemoteDBClass.asyncAuthenticate(initCompletedListener);
MyRemoteDBClass.asyncDataFetch(fetchCompletedListener)
// of course you have to authenticate before fetching the data
Class MyClassA.init()
{
MyRemoteDBClass myRemoteDBClassInstance = new MyRemoteDBClass();
myRemoteDBClassInstance.asyncAuthenticate(some_listener);
}
// Then somewhere in the app:
Class MyClassB.asyncDataFetch(MyRemoteDBClass myRemoteDBClassInstance){
myRemoteDBClassInstance.asyncDataFetch(myClassBObject_as_listener)
}`
:以下のコードを考えてみてください。既に完了しました。
initが完了した後、MyClassBのmyRemoteDBClassInstance.asyncDataFetchメソッドを呼び出すことをどのようにしてお約束できますか?
'init()'操作をブロックするようにして、認証が完了するのを待ちます。リスナと 'init()'メソッドの間で共有される 'CountDownLatch'(値1で初期化)が必要です。リスナーで 'latch.countDown()'と 'init()' - 'latch.await()' –