私のアプリでアラームマネージャーを使用していて、午前2時にDefaultSharedPreferencesの値をリセット(0に設定)する必要があります。 私はアプリが開いているときに呼び出され、私の主な活動の機能があります。Android AlarmManagerが正常に動作しない
protected void setUpAlarmManager(){ //To delete the data of each day and pass it to Records database
AlarmManager alarmManager = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, AlarmReceiver.class);
PendingIntent pIntent = PendingIntent.getBroadcast(this, 1, intent, PendingIntent.FLAG_CANCEL_CURRENT);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 02);
calendar.set(Calendar.MINUTE, 00);
calendar.set(Calendar.SECOND, 00);
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY , pIntent); //set repeating every 24 hours
Log.i("Set", "Alarm set");
}
をそして私は、値をリセットするためにBroadcastReceiverを使用しています。
package com.javierd.iifym;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.util.Log;
import com.javierd.iifym.sqlite.RecordsDataSource;
//To delete the data of each day and pass it to Records database
public class AlarmReceiver extends android.content.BroadcastReceiver {
private RecordsDataSource dataSource;
private Utils utils;
@Override
public void onReceive(Context context, Intent intent) {
Log.i("Time", "TIMEEEE!!!!");
SharedPreferences macros = context.getSharedPreferences(context.getPackageName() + "_preferences", Context.MODE_PRIVATE); //As we store data using DefaultSharedPreferences, not SharedPreferences
SharedPreferences.Editor editor = macros.edit();
editor.putString("eaten_carbs", "0");
editor.putString("eaten_proteins", "0");
editor.putString("eaten_fats", "0");
editor.apply();
}
}
受信機が動作すると、AlarmManagerがランダムに動作するという問題があります。それはちょうど午前2時になっているはずですが、多分16時にアプリを入力し、値を保存して、次回17時に入力すると値が削除されるか、そうでないかもしれない私はそれを理解していない。
を試してみてくださいでした。 – natario