2016-10-08 63 views
0

我在Facebook上的應用項目,我使用Firebase數據庫,並有一個用戶(登錄用戶)的對象,並在該對象有屬性像名字電子郵件配置文件圖片等Android如何通過不同的活動訪問相同的對象

我的問題是我知道我可以加載每一個信息從數據庫,每當用戶瀏覽不同的活動(如配置文件消息時間軸),但爲了節省一些時間,我想在MainActivity加載數據和把數據放入一個對象(如user.setProfile),我想從每個Activity訪問該對象?這可能嗎?(簡單的例子將不勝感激)

回答

0

一種可能的解決方案是使用你的應用程序類。

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是在應用程序類的靜態,你可以對其進行重新初始化,而不必擔心在不同活動的不一致。

+0

感謝您的明確回答 – user6798995

+0

不要忘記將您的應用程序類添加到清單文件。 –

+0

我不會感謝! – user6798995

1

你應該嘗試一下Singleton設計模式,並且不要忘記線程安全問題。

參考:Singleton pattern

+0

我知道單身模式在Java中工作,它需要創建構造函數,但在活動中呢?你如何使它在那裏工作? – user6798995

+0

創建一個單例類,並在Activity類中使用它的實例。你所需要做的就是提供所需的接口。例如,'private T userProfile','public T getUserProfile()','public void setUserProfile(T)'。 – jules3c

0

通過您的應用程序來處理這種依賴的一個好方法是,如果你想偷懶,你可以保持一個對象使用依賴注入框架,如匕首http://square.github.io/dagger/

在您的應用程序類中,這將隨時適用於任何活動。

0

我想建議在啓動Activity中聲明一個static對象。然後,您可以從其他所有Activity中獲取值,並將其填充到從Firebase獲取的值中。

相關問題