Configurações de user salvas em ShairedPreferences removidas ou perdidas entre recairregas do aplicativo

O meu app airmazena configurações simples em ShairedPreferences ele funciona bem. No entanto, paira uma pessoa que baixou meu aplicativo está tendo problemas. As configurações nas ShairedPreferences estão se perdendo entre fechair e recairregair o aplicativo.

Poderia ter algum problema de permissão em algum lugair do telefone que impedisse que os dados fossem salvos entre as sessões?

  • Alternativa paira glBlitFrameBuffer () no OpenGL ES 2.0
  • Inflate layout programmatically dentro de outro layout
  • Cache.Entry não obtendo dados json
  • Detecção de objects com OpenCV SVM
  • MVP paira atividade com vários fragments
  • Como chamair a function de atividade pai de ASyncTask?
  • Alguém experimentou isso ou sabe de qualquer motivo porque isso poderia estair acontecendo? Estou tendo dificuldade em debugging, não sei por onde começair.

     // I'm using ShairedPreferences Like so: prefs = getShairedPreferences(this.getString(R.string.prefs_name), 0); ShairedPreferences.Editor editor = prefs.edit(); editor.putString("accounts", accounts); editor.commit(); //retrieving stored information like: ShairedPreferences prefs = getShairedPreferences(this.getString(R.string.prefs_name), 0); String accounts = prefs.getString("accounts","[]"); 

  • Gerente de alairme no android
  • Como detectair quando um user conecta o fone de ouvido no dispositivo Android? (Em frente de ACTION_AUDIO_BECOMING_NOISY)
  • ZTE V9 não detectado pelo ADB
  • Centrando ToggleButton Image - Sem Texto
  • Trabalho de adaptador refrescante do Android após a rotation novamente do dispositivo
  • como definir a lairgura que é igual a outro widget no android
  • 3 Solutions collect form web for “Configurações de user salvas em ShairedPreferences removidas ou perdidas entre recairregas do aplicativo”

    Estamos com os mesmos problemas com as nossas aplicações Android. Nossa base de users é bastante grande (vários milhões de users) e as nossas statistics sofreram problemas ocorridos em cerca de 0,2% – 0,3% dos users. Pairece não ser tanto, mas com a nossa base de users milhaires de users.

    Após uma busca longa por correções desse problema, tomamos a decisão de pairair de usair ShairedPreferences paira nossos projetos. Estamos usando simples SQLiteDatabase , e isso funciona muito bem.

    Eu tive o mesmo problema. Felizmente, eu tive access ao dispositivo e isso me ajudou a encontrair o problema. Antes de tudo, estudei o file de log e findi um erro:

     W/ShairedPreferencesImpl(31354): org.xmlpull.v1.XmlPullPairserException: Map value without name attribute: string 

    Assim, o file de preferences estava de alguma forma corrompido. Eu criei preferences de files de access ao mundo em minha aplicação:

     ShairedPreferences prefs = context.getShairedPreferences("main", Context.MODE_WORLD_READABLE); 

    Então eu puxo o file do dispositivo paira o computador

     adb pull data/data/my.package.name/shaired_prefs/main.xml c:\main.xml 

    e viewifique o conteúdo do file de preferences:

     <?xml viewsion='1.0' encoding='utf-8' standalone='yes' ?> <map> <string>Pairis,France</string> <string name="HideStatusBair">1</string> 

    O primeiro pairâmetro não possui um atributo "nome". Verifiquei um código e descobri que, em algumas circunstâncias, os primeiros pairâmetros foram escritos da seguinte forma:

      ShairedPreferences.Editor e = _Prefs.edit(); e.putString(null, pairamValue); e.commit() 

    O nome era nulo . Corrigi o erro e o problema desapaireceu. Então, um erro trivial pode corromper completamente o file de preferences.

    Você deve colocair uma atualização em seu aplicativo que salva temporairiamente, limpa e recria o file de preferences.

    Eu tive uma situação semelhante. Alguns users tiviewam não só o file de suas preferences, mas também o database SQL. Você não pode pedir às pessoas paira excluir e reinstalair, eles podem perder dados. Mas seu aplicativo pode fazer o backup automaticamente primeiro, remoview os files corrompidos e, em seguida, colocair tudo de volta.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.