2013-07-25 29 views
8

Ho un servizio in cui ci sono 4 variabili int statiche globali e ho un ricevitore di BOOT COMPLETE e Call event. quello che sto cercando di fare è salvare queste 4 variabili ogni volta che il ricevitore dell'evento di chiamata viene eseguito e recuperarle quando viene eseguito il ricevitore BOOT (ovviamente quando riavvio il telefono) ma entrambe non funzionano .. un'altra cosa è utile anche per le preferenze condivise quando il dispositivo si riavvia ?? il codice è il seguentePreferenze condivise Android non funzionanti

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(); 

e per il recupero

 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

Potete per favore caricare il codice di BroadCastRecevier? – Vigbyor

+0

in realtà sto iniziando un altro nuovo servizio di intenti nel ricevitore e in quello che sto facendo. nella funzione Onhandleintent(). – Ateeq

risposta

17

ho usato questo ed ha funzionato per me.

Per salvare

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

e per il recupero

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

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

Grazie per aver postato questo. StraightPreferences dirette non funzionava come prescritto. – SQLiteNoob

11

Il problema è che ogni volta che si chiama Edit() un nuovo oggetto Editor è created.You dovrebbe tenere istanza di un oggetto Editor ed eseguire tutte le operazioni su di esso.

Usa seguente

 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

non funziona lo stesso numero – Ateeq

Problemi correlati