Non, il n'y aura pas de fuite de mémoire si vous utilisez un contexte d'application. Créez le SharedPrefsManager
en tant que singleton et initialisez à partir de votre classe Application
. afin que vous puissiez accéder de partout
Créer comme ça,
public class SharedPrefsManager {
private static SharedPrefsManager mInstance= null;
private SharedPreferences sharedPreferences;
private SharedPreferences.Editor prefsEditor;
private SharedPrefsManager(Context context) {
sharedPreferences = context.getSharedPreferences(context.getPackageName(), Activity.MODE_PRIVATE);
prefsEditor = sharedPreferences.edit();
}
public static void init(Context context) {
mInstance = new SharedPrefsManager(context);
}
public static SharedPrefsManager getInstance() {
if (mInstance == null) {
throw new RuntimeException(
"Must run init(Application application) before an instance can be obtained");
}
return mInstance;
}
/**
* To get the Stored string value in Preference.
*
* @param key
* @param defaultvalue
* @return stored string value.
*/
public String getStringValue(final String key, final String defaultvalue) {
return sharedPreferences.getString(key, defaultvalue);
}
/**
* To store the string value in prefernce.
*
* @param key
* @param value
*/
public void setStringValue(final String key, final String value) {
prefsEditor.putString(key, value);
prefsEditor.commit();
}
}
De classe d'application, vous pouvez initialiser comme celui-ci,
public class StackApp extends Application {
@Override
public void onCreate() {
super.onCreate();
SharedPrefsManager.init(this);
}
}
Alors que vous pouvez utiliser à partir de toute autre classe sans contexte. Ex: vous pouvez utiliser comme ça,
SharedPrefsManager.getInstance().setStringValue("key", "value");
Pourquoi auriez-vous besoin d'une instance de la classe si la chose Vous êtes après, c'est statique aussi. Rendez les 'SharedPreferences' non-statiques. – Vucko
Le contexte de l'application va vivre tant que votre application est active et ne dépend pas du cycle de vie des activités, donc pas de fuite de mémoire dans ce cas –