2014-01-13 84 views
0

如果在我的應用程序的Web服務調用的形式爲:替代全局變量的Android

[domain]/USER_ID/[action] 

什麼是跟蹤用戶ID的最佳方式?做這樣的事情:

public class MyApp extends Application { 
    private String userId; 
    public String getUserId() { return this.userId; } 
} 

似乎是最快的,但我不願意開始下滑是全球變數的滑坡。我曾看到一些人推薦使用SharedPreferences來做這樣的事情,但我不知道這是否是一個好的解決方案,或者考慮到在正常使用應用程序期間我需要非常頻繁地訪問數據。這樣做:

SharedPreferences sp = this.getSharedPreferences(...); 
String userId = sp.getString(...); 

每一次我需要的信息似乎會導致相當多的開銷。在這種情況下有沒有其他的選擇?在不使用全局變量的情況下處理跟蹤Android中全局變量的最佳方法是什麼? (或者,全局變量可能值得在Android中使用嗎?)

+1

這種方法就會變得混亂是當你存儲有關全局變量應用程序*州*。如果您無法確定特定方法在不知道方法外部事物狀態的情況下會如何表現。像帕特里克所說的那樣,存儲您需要訪問的數據通常很有意義。如果您需要在應用程序實例之間保留值,請在創建/更改時將其保存到共享首選項,然後在應用程序的onCreate()中檢索該值,然後按照所示進行訪問。有些人會認爲userId是國家,但這是手鐲。 – Simon

回答

2

如您所述,擴展Application類是存儲和使用全局變量的最常用方法。這非常適合您需要在整個應用程序中頻繁訪問的少量數據。使用上下文