Ich habe eine Aktivität Einstellungen, wo ich einen Wert für einen Schlüssel in sharedPreferences festlegen. Wenn ich diesen Schlüssel für 2-3-4 mal den App-Crash setze.sharedpreferences android-speicher vmHeap
03-19 12:07:00.701 12542-12542/giordano.piercarmine.crossfitpersonalrecords I/art: Alloc concurrent mark sweep GC freed 3(96B) AllocSpace objects, 0(0B) LOS objects, 6% free, 54MB/58MB, paused 10ms total 20ms 03-19 12:07:00.701 12542-12542/giordano.piercarmine.crossfitpersonalrecords I/art: Forcing collection of SoftReferences for 10MB allocation 03-19 12:07:00.701 12542-12542/giordano.piercarmine.crossfitpersonalrecords I/art: Starting a blocking GC Alloc 03-19 12:07:00.711 12542-12542/giordano.piercarmine.crossfitpersonalrecords I/art: Alloc concurrent mark sweep GC freed 3(96B) AllocSpace objects, 0(0B) LOS objects, 6% free, 54MB/58MB, paused 0 total 10ms 03-19 12:07:00.711 12542-12542/giordano.piercarmine.crossfitpersonalrecords W/art: Throwing OutOfMemoryError "Failed to allocate a 10840012 byte allocation with 4194304 free bytes and 9MB until OOM" 03-19 12:07:00.721 12542-12542/giordano.piercarmine.crossfitpersonalrecords D/skia: --- decoder->decode returned false 03-19 12:07:00.721 12542-12542/giordano.piercarmine.crossfitpersonalrecords D/AndroidRuntime: Shutting down VM 03-19 12:07:00.721 12542-12542/giordano.piercarmine.crossfitpersonalrecords E/AndroidRuntime: FATAL EXCEPTION: main Process: giordano.piercarmine.crossfitpersonalrecords, PID: 12542 java.lang.OutOfMemoryError: Failed to allocate a 10840012 byte allocation with 4194304 free bytes and 9MB until OOM
Das ist meine Klasse für SharedPreferences:
` public class Sessionmanager { // LogCat Tag // private static String TAG = SessionManager.class.getSimpleName();
// Shared Preferences
SharedPreferences pref;
Editor editor;
Context _context;
// Shared pref mode
int PRIVATE_MODE = 0;
// Shared preferences file name
private static final String PREF_NAME = "AndroidHiveLogin";
private static final String KEY_IS_LOGGEDIN = "isLoggedIn";
private static final String TYPE_OF_WEIGHT = "Kg";
public SessionManager(Context context) {
this._context = context;
pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
editor = pref.edit();
}
public void setLogin(boolean isLoggedIn) {
editor.putBoolean(KEY_IS_LOGGEDIN, isLoggedIn);
// commit changes
editor.commit();
//Log.d(TAG, "User login session modified!");
}
public boolean isLoggedIn(){
return pref.getBoolean(KEY_IS_LOGGEDIN, false);
}
public void setTypeOfWeight(String typeOfWeight){
editor.putString(TYPE_OF_WEIGHT, typeOfWeight);
editor.apply();
}
public String getTypeOfWeight(){
return pref.getString(TYPE_OF_WEIGHT, "Kg");
}
` In allen Aktivitäten erstelle ich eine instace dieser Klasse mit neuer. Ist das der richtige Weg?
danke mann. Ich habe den Fehler gefunden. Wenn ich in der Aktivitätseinstellung auf Speichern klicke, wechsle ich zu einer anderen Aktivität (mainActivity) durch intent und startActivity (intent). Wenn ich mehrmals auf die Schaltfläche speichere, mache ich mehrere Instanzen dieser Aktivität und der Speicher steigt um 10 MB jedes Mal – aRaKaNoiD
Sie sind willkommen. –