2016-09-22 128 views
1

我現在正在使用新的Firebase API在我的第一個應用中工作。而且我在通過我的代碼保留Firebase對象引用時遇到問題,因爲我不知道哪種方法可以實現此目的。在代碼中保存Firebase參考的最佳方式

所以,情況就是這樣。我有一個應用程序,我的用戶可以創建組,並且在這些組中(他們可以屬於多個組),他們可以發佈一些內容。在我的實際火力地堡的數據庫,它看起來像:

{ 
    "Posts":{ 
      "GroupKey1":{ 
       "PostKey1":{ 
        "text": 
        "imageUrl": 
        "author":{ 
         ... 
        } 
       } 
       "PostKey2":{ 
        "text": 
        "imageUrl": 
        "author":{ 
         ... 
        } 
       } 
       "PostKey3":{ 
        "text": 
        "imageUrl": 
        "author":{ 
         ... 
        } 
       } 
      } 
      "GroupKey2":{ 
       .... 
      } 
     } 
} 

所以,當我想收回關聯到做一個查詢的特定組iI'm帖子:

Query newQuery = FirebaseDatabase.getInstance().getReference().child("posts").child(mCurrentGroupID); 

一切都很好與。它的工作,並沒有問題。但我需要保持mCurrentGroupID String保持我的組活動和片段中的所有生命週期。現在我正在使用bundle來保持字符串在代碼中存活,但它開始變得非常有幫助。

所以,我的問題是,在代碼中保持這種變量的最佳方式是什麼?使用SharedPreferences?仍然在使用捆綁包,一個靜態變量,一個BaseActivity中的默認項目,它被擴展用於其餘的活動...

希望有人能幫我一把!謝謝大家!

回答

2

我會堅持讓全局變量在Application這個專門用於Android的應用程序中用於整個應用程序。 Here是一個教程,介紹如何使用應用程序類來保存和檢索全局變量

1

一旦您第一次收到該ID,您可以將它存儲在SharedPreferenceManager中,其餘的地方是從SharedPreferenceManager獲取的地方。每次您從Firebase獲取該ID時,請繼續更新該ID。

+0

我已經考慮將它保存在SharedPreferences中,但是一個用戶可以有多個組,所以我需要在用戶每次更改之間修改此值一組到另一組。這就是爲什麼我不知道是否是最好的方式! –

+0

是的,每當用戶更改組時,都從firebase獲取當前組ID並在prefManager中更新它。 – Pr38y

+0

另一種方法是從firebase本身獲取,但我認爲它會再次進行網絡調用。 – Pr38y

相關問題