2013-03-11 4 views
2

Je suis nouveau à la programmation Android, j'essaye de développer une application qui est utilisée pour définir des alarmes. Comme le AlarmManager perdra toutes les alarmes au redémarrage du système, j'ai donc sauvegardé toutes les alarmes créées par l'utilisateur en utilisant SharedPreferences.SharedPreferences ne se met pas à jour dans onResume()

J'ai une activité principale, qui liste toutes les alarmes. J'ai une activité alarm_create qui crée les alarmes. alarm_receiver classe est appelée PendingIntent lorsque l'alarme se déclenche.

Maintenant, même si le alarm_receiver modifie l'alarme, il n'apparaît pas dans le main_activity lorsque l'application reprend.

Pour enregistrer l'alarme, j'ai utilisé le concept de file d'attente qui m'aiderait à récupérer les alarmes en boucle.

S'il vous plaît aidez-moi avec le problème.

+0

mettez à jour votre code que vous avez essayé. –

+0

Avez-vous enregistré l'alarme dans la méthode onPause de toutes les activités qui changent l'alarme? (voir le cycle de vie de l'activité: http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle) – Laviniux

+0

Montrez votre code. Juste expliquer ce que vous essayez de faire sans montrer de code n'aide personne à vous aider. – Squonk

Répondre

0

En fait, les SharedPreferences ne sont pas mises à jour instantanément, elles sont mises à jour lorsque l'application est redémarrée.

Malheureusement, le redémarrage d'une application n'est pas si facile à coder sur Android, et est hors de portée pour votre application.

La réponse ci-dessus par DecodeGnome, peut être utilisée pour relouer la liste ou recharger l'alarme de l'application.

Je vous suggère d'aller pour SQLiteDatabase Classe, et de stocker les alarmes dans la base de données SQLite, comme tous les appareils Android a SQLiteDatabase.

Vous pouvez voir le code de référence here.

0

Ci-dessous est l'extrait de code que nous utilisons pour sauver les sharedPreferences

Editor prefsEditor = preferences.edit(); 
prefsEditor.putString(CONFIG_INFO_KEY, configInfoJson); 
prefsEditor.commit(); 

Hope this helps

+0

J'ai le même problème. –

+1

J'ai utilisé la méthode ci-dessus .. mais son ne fonctionne pas. –

+0

Joe2013 .. comme vous le suggérez, j'ai fait la même chose mais le problème auquel je suis confronté est lorsque l'application retourne à une autre activité après la mise à jour de la valeur, cette activité particulière n'obtient pas les valeurs SharedPreferences mises à jour. :( –

1

Im pas tout à fait sûr que je comprends exactement ce que vous voulez, mais si je comprends bien que vous voulez définir les alarmes à nouveau après le redémarrage de l'appareil.

1) Créer un Reciever qui écoute le redémarrage:

public class BootReciever extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     SharedPreferences settings = context.getSharedPreferences("YOUR SHAREDPREF NAME", 0); 
     SharedPreferences.Editor editor = settings.edit(); 
     editor.putString("alarmName", "newAlarm"); 
     editor.commit(); // Don't forget to commit your changes! 

    } 
} 

2) Ajouter dans votre AndroidManifest.xml:

<receiver android:name="com.yourpackage.BootReciever"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED"/> 
     </intent-filter> 
    </receiver> 

3) Ajouter la permission:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
+0

exactement je cherche à récupérer les valeurs sauvegardées SharedPrefences sans redémarrer l'application –

+0

Thnx pour cela, je cherchais cela aussi –

+0

Mis à jour ma réponse :) Rappelez-vous de editor.commit(); et assurez-vous d'obtenir les valeurs (dans votre main_activity) à partir des mêmes SharedPreferences (en utilisant le même nom). Si cela ne vous aide pas, vous devrez poster votre code afin que nous puissions comprendre ce qui se passe. – DecodeGnome