私は別の期間にSMSメッセージを送信するために私のアプリケーションのためのAlarmManagerを作成しています。たとえばAlarmManagerの時間を5分にすると、すぐに約1〜2回起きますが、その後は正常に動作します。私は期間の値を変更した後、状況が繰り返されます。私は、これがAlarmManagerを停止すること、またはリピータを設定することで間違っていると思います。Androidのアラームマネージャが間違っている
これは私のmakeAlarm
機能である:私は私のアラームを作成
public class SmsAlarmReceiver extends BroadcastReceiver {
public static final int REQUEST_CODE = 322;
@Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(context, SmsSenderService.class);
context.startService(i);
}
}
:これはBroadcastReceiver
を拡張私のSmsAlarmReceiver
クラスは
private void cancelAlarm() {
try {
Intent i = new Intent(this, SmsAlarmReceiver.class);
PendingIntent pIntent = PendingIntent.getBroadcast(this.getApplicationContext(), SmsAlarmReceiver.REQUEST_CODE,
i, 0);
AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);
alarm.cancel(pIntent);
pIntent.cancel();
} catch (Exception e) {
e.printStackTrace();
}
}
です:これは私のcancelAlarm
機能が
private void makeAlarm() {
cancelAlarm();
Intent i = new Intent(this, SmsAlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), SmsAlarmReceiver.REQUEST_CODE,
i, PendingIntent.FLAG_UPDATE_CURRENT);
long firstMillis = System.currentTimeMillis();
SharedPreferences refreshSettings = getSharedPreferences("com.example.xd720p.sensorcontroller_09082016",
Context.MODE_PRIVATE);
double refreshForTValue = Double.valueOf(refreshSettings.getString("tempPeriod", "30"));
if (refreshForTValue <= 0) {
cancelAlarm();
} else {
long period = Math.round(refreshForTValue * 60 * 1000);
AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, firstMillis,
firstMillis + period, pendingIntent);
}
}
ですのメソッド。また、私は時の価値を変えて、私の警報を止め、新しいものを作ります。この値はSharedPreferences
に格納されていますので、onSharedPreferenceChanged
にアラームを再現しようとしましたが、私の状況では意味をなさない。
確認してくださいそのことはできません** refreshForTValue **これが問題になることvalue.Mayその – Saveen
@Saveenこの値は、ユーザーが繰り返しのために0以下の値を入れるかどうかをチェックするためです。この場合、私はAlarmManagerを殺すだけです。私は問題が** refreshForTValueにあるとは思わない** – xd720p
アラームの設定はこの値に依存します。あなたが思うようにそれが間違っているか違うならば。それはあなたに別の状況を与えるでしょう – Saveen