2016-03-10 58 views
1

在我們想要讀取config vars的代碼中,無處不在創建一個新的SharedPreferences對象嗎?每次讀取配置變量時都創建一個新的SharedPreferences對象?

SharedPreferences prefs=PreferenceManager.getDefaultSharedPreferences(this); 

我有幾個方法和類這樣的代碼,每次調用一個方法相同的代碼被一次又一次地執行以獲得SharedPreferences對象只是一個實例。

我認爲我可以將所有這些僅僅歸爲一個實例,將該SharedPreferences對象存儲到某個類var/field中,然後使用存儲在該var中的對象在其他所有位置(創建一次並使用很多次)。也許我可以將它存儲在專門用於此目的的單獨類的靜態字段中,然後在每個其他類中使用它。

什麼ü建議,爲什麼?

回答

0

如果您需要訪問這些變量在活動則創建活動,當你採取照顧,然後將設置保存爲變量。然後,如果您需要在該活動中的方法中使用它,那麼您可以輕鬆訪問它們。

如果一個單獨的類需要這些值然後只傳遞那些作爲參數。這將減少您必須「運行相同的代碼」的次數。

0

創建擴展Application類單和實例化的sharedPreferences。並提供public static的訪問權限。

像這樣:

public class MyApplication extends Application { 
    private static SharedPreferences prefs; 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
     prefs = PreferenceManager.getDefaultSharedPreferences(this); 
    } 

    public static SharedPreferences getSharedPref(){ 
      return prefs; 
    } 
} 
1

我個人不以任何我的應用程序使用我SharedPreferences一個靜態實例。我總是這樣做,因爲你在做PreferenceManager.getDefaultSharedPreferences(context)並在那個特定的方法中使用。

如果你是在一個特定的方法,以您的首選項訪問過於頻繁,也許你應該重新考慮它是否是一個良好的使用與否。如果您經常從首頁上獲得的信息是經常需要的,那麼爲什麼不將它保存在內存中,並在不存在時從首選項加載?我肯定會爲此而努力。

只是爲了好奇,如果你想看到一個getSharedPreferences方法在內部看this的例子。

相關問題