こんにちは私はsharedPreferencesに保存されている値の一部が毎週リセットされるアプリをセットアップしようとしています。次のように、ボタンがクリックされたときに開始するようにアラームマネージャを設定しました。
public class EditPreferences extends PreferenceActivity implements
SharedPreferences.OnSharedPreferenceChangeListener, OnClickListener {
Button button;
Toast mToast;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.prefsbuttons);
button = (Button) findViewById(R.id.bPrefButton);
button.setOnClickListener(this);
addPreferencesFromResource(R.xml.preferences);
getPreferenceManager().getSharedPreferences().
registerOnSharedPreferenceChangeListener(this);
}
protected void onDestroy() {
getPreferenceManager().getSharedPreferences().
unregisterOnSharedPreferenceChangeListener(this);
@overide
super.onDestroy();
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()){
case R.id.bPrefButton:
Intent intent = new Intent(EditPreferences.this, RepeatingAlarm.class);
PendingIntent sender = PendingIntent.getBroadcast(EditPreferences.this,
0, intent, 0);
SharedPreferences userPrefs = PreferenceManager
.getDefaultSharedPreferences(getBaseContext());
Editor editor = userPrefs.edit();
editor.putInt("savedFlash23", 0);
editor.putInt("savedFlash4", 0);
editor.putInt("savedFlash5", 0);
editor.putInt("savedClean23", 0);
editor.putInt("savedClean4", 0);
editor.putInt("savedClean5", 0);
editor.putInt("savedDog23", 0);
editor.putInt("savedDog4", 0);
editor.putInt("savedDog5", 0);
editor.commit();
// We want the alarm to go off 30 seconds from now.
long firstTime = SystemClock.elapsedRealtime();
firstTime += 15*1000;
// Schedule the alarm!
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
firstTime, 15*1000, sender);
// Tell the user about what we did.
if (mToast != null) {
mToast.cancel();
}
mToast = Toast.makeText(getBaseContext(), "first toast message",
Toast.LENGTH_LONG);
mToast.show();
}
}
}
トーストメッセージが表示され、共有設定がリセットされます。
インテントはリスナーのクラスに渡され、次のコードがあります。
public class RepeatingAlarm extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "repeat toast message",
Toast.LENGTH_LONG).show();
SharedPreferences userPrefs= PreferenceManager.getDefaultSharedPreferences(context);
Editor editor = userPrefs.edit();
editor.putInt("savedFlash23", 0);
editor.putInt("savedFlash4", 0);
editor.putInt("savedFlash5", 0);
editor.putInt("savedClean23", 0);
editor.putInt("savedClean4", 0);
editor.putInt("savedClean5", 0);
editor.putInt("savedDog23", 0);
editor.putInt("savedDog4", 0);
editor.putInt("savedDog5", 0);
editor.commit();
}
}
トーストメッセージが表示されますが、共有設定の値がリセットされなくなりました。