Le preferenze condivise si perdono dopo la distriggerszione del dispositivo o l'uccisione dell'applicazione

ci sono molte domande relative alle preferenze condivise e alle alternative. Il mio problema: quando chiudo il dispositivo o uccido l'applicazione, le preferenze condivise si perdono. Si prega di notare che il mio codice funziona effettivamente su Acer A500. Ma sul mio Motorola Xoom MZ604 non funziona !!

Prima di tutto cerco di ripristinare il mio HashSet in onCreate. Questo metodo viene chiamato per sicuro e viene implementato in un singolo.

  • GetDefaultSharedPreferences di Android
  • NullPointerException a getDefaultSharedPreferences
  • Array di stringhe in SharedPreferences
  • Funzione di logging del test di Espresso in Android Studio 2.2
  • Distriggers / abilita la notifica
  • Come rilevare se sono state apportte modifiche nelle preferenze?
  • public boolean restoreCollection(Context context){ SharedPreferences settings = context.getSharedPreferences(context.getString(R.string.restore_values), 0); if(settings.getStringSet(context.getString(R.string.collection), null) != null){ collection = settings.getStringSet(context.getString(R.string.collection), null); return true; } collection = new HashSet<String>(); return false; } 

    Chiamando onDestroy salvo l'HashSet. Anche se non è dato, che questo metodo sia chiamato in modo sicuro, le Preferenze si perdono in each caso, ho cercato di salvarlo in onPause con lo stesso risultato.

     public void saveCollection(Context context){ SharedPreferences settings = context.getSharedPreferences(context.getString(R.string.restore_values), 0); SharedPreferences.Editor e = settings.edit(); e.putStringSet(context.getString(R.string.collection), collection); e.commit(); } 

    Ha avuto problemi con le Preferenze Condivise e il dispositivo XOOM o sono l'unico? Forse qualcosa è pesante con il mio codice ma i dati non si perdono sul mio Acer Tablet.

    Ho anche provato PreferenceManager.getDefaultSharedPreferences (context) per get object di SharedPreferences

    Grazie per il tuo aiuto, Chris

    3 Solutions collect form web for “Le preferenze condivise si perdono dopo la distriggerszione del dispositivo o l'uccisione dell'applicazione”

    Ho scoperto una soluzione che funziona entrambi, sia sul mio Acer che sul mio dispositivo XOOM: bisogna call clear () sull'editor prima di commettere nuovi dati:

     public void saveCollection(Context context){ SharedPreferences settings = context.getSharedPreferences(context.getString(R.string.restore_values), 0); SharedPreferences.Editor e = settings.edit(); e.clear(); e.putStringSet(context.getString(R.string.collection), collection); e.commit(); } 

    Stavo usando l'identico problema quando si utilizza la string impostata con le SharedPreferences. Ho scoperto perché questo stava succedendo e come risolverlo.

    Molto importnte leggere la documentazione API per SharedPreferences.getStringSet (chiave String, imposta defValues)

    In sostanza NON modificare o toccare il set restituito! Se si otterranno risultati dispari con SharedPreferences. 🙂

    Godere!

    Il tuo problema sembra essere lo stesso descritto qui per il dispositivo Samsung Galaxy S esegue standard Froyo 2.2.1 . Alcune impressioni dalla loro discussione:

    Il registro mostra:

    01-19 12: 08: 56.856 W / ApplicationContext (4563): tentativo di leggere le file preferenze /dbdata/databases/com.mobilemerit.ultimatefaves/ shared_prefs / com.mobilemerit.ultimatefaves_preferences.xml senza authorization

    Una ansible soluzione alternativa sembra essere:

    Il mio utente sembra avere avuto lo stesso sintomo.

    Mi ha mandato via e-mail che ha dovuto fare un reset di fabbrica al suo telefono per altre ragioni, ha reinstallato l'applicazione dal mercato (qualcosa che non ha aiutato prima del reset) e ora tutto funziona come previsto.

    Un'altra soluzione:

    Ho gli stessi problemi con la mia 2.2.1 Galaxy S (radicata), lo risolvo eliminando la cartella di applicazione (com.xxx) in \ dbdata \ databases. Qualcuno ha lo stesso problema su un altro telefono?

    E questo ragazzo ha trovato la causa:

    Ho installato la mia applicazione (WidgetLocker) e ho ottenuto app_81, ho disinstallato usando "adb uninstall com.teslacoilsw.widgetlocker" e poi reinstallato e ho scoperto che le mie preferenze erano rimaste perse nella disinstallazione, ma nessun permesso negava l'errore. Ho disinstallato nuovamente nello stesso modo, questa volta sono andato al mercato e installato Androidify. Questo è quando le cose sono diventate interessanti: (…)

    Così Androidify ha ottenuto il mio uid e le mie preferenze sono adesso loro appartenenti . (…)

    E noi siamo avvitati …

    Esiste un report di errore per questo problema: http://code.google.com/p/android/issues/detail?id=14359

    Google ha rifiutato tale errore perché è in realtà un bug causato dalle modifiche apportte dal fornitore per il dispositivo.

    Gli autori dell'applicazione "Beautiful Widgets" forniscono ai propri utenti i seguenti consigli:

    ** SAMSUNG GALAXY S & ANDROID 2.2 **
    Nel Samsung Update è presente un errore che impedisce di salvare il file delle impostazioni. È necessario reimpostare il telefono in fabbrica (…)

    Quindi questo dovrebbe aiutare.

    Rispondi a questa risposta, se questo succede per essere lo stesso problema sul tuo dispositivo Xoom.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.