我在Facebook上的應用項目,我使用Firebase
數據庫,並有一個用戶(登錄用戶)的對象,並在該對象有屬性像名字電子郵件配置文件圖片等Android如何通過不同的活動訪問相同的對象
我的問題是我知道我可以加載每一個信息從數據庫,每當用戶瀏覽不同的活動(如配置文件消息時間軸),但爲了節省一些時間,我想在MainActivity
加載數據和把數據放入一個對象(如user.setProfile
),我想從每個Activity
訪問該對象?這可能嗎?(簡單的例子將不勝感激)
我在Facebook上的應用項目,我使用Firebase
數據庫,並有一個用戶(登錄用戶)的對象,並在該對象有屬性像名字電子郵件配置文件圖片等Android如何通過不同的活動訪問相同的對象
我的問題是我知道我可以加載每一個信息從數據庫,每當用戶瀏覽不同的活動(如配置文件消息時間軸),但爲了節省一些時間,我想在MainActivity
加載數據和把數據放入一個對象(如user.setProfile
),我想從每個Activity
訪問該對象?這可能嗎?(簡單的例子將不勝感激)
一種可能的解決方案是使用你的應用程序類。
class FbprojectApplication extends Application{
static UserObject user;
public static void setUserObject(UserObject user){
this.user=user;
}
public static UserObject getUserObject(){
return user;
}
}
在android應用程序類具有整個應用程序的生命週期,因此可以在需要時使用活動調用。
從活動現在,
public class MainActivity extends Activity{
//initialize userobject whenever you need to.
void initializeUser(UserObject user){
FbprojectApplication.setUserObject(user);
}
}
同樣這個變量將可從任何類。
public class OtherActivity extends Activity{
//get userobject whenever you need to.
FbprojectApplication.getUserObject();
}
由於userobject是在應用程序類的靜態,你可以對其進行重新初始化,而不必擔心在不同活動的不一致。
你應該嘗試一下Singleton設計模式,並且不要忘記線程安全問題。
我知道單身模式在Java中工作,它需要創建構造函數,但在活動中呢?你如何使它在那裏工作? – user6798995
創建一個單例類,並在Activity類中使用它的實例。你所需要做的就是提供所需的接口。例如,'private T userProfile','public T getUserProfile()','public void setUserProfile(T)'。 – jules3c
通過您的應用程序來處理這種依賴的一個好方法是,如果你想偷懶,你可以保持一個對象使用依賴注入框架,如匕首http://square.github.io/dagger/
在您的應用程序類中,這將隨時適用於任何活動。
我想建議在啓動Activity
中聲明一個static
對象。然後,您可以從其他所有Activity
中獲取值,並將其填充到從Firebase獲取的值中。
感謝您的明確回答 – user6798995
不要忘記將您的應用程序類添加到清單文件。 –
我不會感謝! – user6798995