2013-07-25 12 views
8

Mam usługę, w której są 4 globalne statyczne zmienne int i mam odbiornik BOOT COMPLETE i zdarzenia Call. co próbuję zrobić, to zapisać te 4 zmienne za każdym razem, gdy wykona się wywołanie zdarzenia Call i odzyskać je po uruchomieniu odbiornika BOOT (oczywiście, gdy zrestartowałem mój telefon), ale oba nie działają. kolejna rzecz jest również użyteczna preferencje kiedy urządzenie uruchomi się ponownie? kod znajduje się poniżejPreferencje współdzielone z Androidem nie działają

SharedPreferences saved_values = this.getSharedPreferences(
       "com.example.app", Context.MODE_PRIVATE); 
    saved_values.edit().putInt("call", MyService.callcount); 
    saved_values.edit().putInt("callend",MyService.callendcount); 
    saved_values.edit().putInt("network",MyService.network_count); 
    saved_values.edit().putInt("ringing",MyService.ringingcount); 
    saved_values.edit().commit(); 

i za zdobycie

 SharedPreferences saved_values = this.getSharedPreferences(
        "com.example.app", Context.MODE_PRIVATE); 
      MyService.callcount = saved_values.getInt("call", -10); 
      MyService.ringingcount=saved_values.getInt("ringing", -10); 
      MyService. network_count=saved_values.getInt("network", -10); 
      MyService.  callendcount=saved_values.getInt("callend", -10); 
+0

można proszę przesłać kod BroadCastRecevier? – Vigbyor

+0

Tak naprawdę zaczynam nową usługę intencji w odbiorniku i to robię. w funkcji Onhandleintent(). – Ateeq

Odpowiedz

17

użyłem tego i pracował dla mnie.

Do zapisywania

SharedPreferences saved_values = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
SharedPreferences.Editor editor=saved_values.edit(); 
    editor.putInt("count",count); 
      editor.putInt("foo",foo); 
    editor.commit(); 

i za zdobycie

 SharedPreferences saved_values = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 

     count = saved_values.getInt("count", -1); 
+3

Dziękujemy za opublikowanie tego. Straight SharedPreferences nie działa zgodnie z zaleceniami. – SQLiteNoob

11

Problem jest przy każdym wywołaniu edit() nowy obiekt Editor jest created.You powinien posiadać wystąpienie jednego obiektu redaktor i wykonać wszystkie operacje na nim.

Użyj następujących

 SharedPreferences saved_values = this.getSharedPreferences(
       "com.example.app", Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor=saved_values.edit(); 
     editor.putInt("call", MyService.callcount); 
     editor.putInt("callend", MyService.callendcount); 
     editor.putInt("network", MyService.network_count); 
     editor.putInt("ringing", MyService.ringingcount); 
     editor.commit(); 
+2

nie działa ten sam numer – Ateeq

Powiązane problemy