intent.putExtra не передает самые новые значения строки в intent

#android #android-intent #android-alarms

#Android #android-intent #android-сигналы тревоги

Вопрос:

Я использую AlarmManager и пытаюсь ввести некоторые значения в putExtra my BroadcastReceiver . Значения, которые я отправляю, отправляются в BroadcastReceiver , он отлично работает для передачи значений.

Но я отправляю свою переменную «counter» и всегда получаю старые значения, которые существовали при первом запуске my setRepeating() . И я знаю, что значения счетчика намного выше, чем я там вижу. Поэтому, когда значения меняются, ничего не происходит. Как я могу получать событие каждые полчаса с правильными значениями ?!

Я искал уже 3 часа, но не могу найти решение для взаимодействия моего AlarmManager и некоторых значений из датчика…

 public void startAlarm(View view) {

    try {
        AlarmManager alarms = (AlarmManager) this
                .getSystemService(Context.ALARM_SERVICE);

        Intent intent = new Intent(getApplicationContext(),
                MyAlarmReceiver.class);

         intent.putExtra("startStepCounter", startStepCounter);
         intent.putExtra("lastStepCounter", lastStepCounter);

        final PendingIntent pIntent = PendingIntent.getBroadcast(this,
                1234567, intent, PendingIntent.FLAG_CANCEL_CURRENT);

        alarms.setRepeating(AlarmManager.RTC_WAKEUP,
                System.currentTimeMillis(), timeToAlarmMilli, pIntent);

    } catch (Exception e) {

    }
}

public class MyAlarmReceiver extends BroadcastReceiver {

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

    Log.i("Alarm Receiver", "Entered");


      //
    Bundle bundle = intent.getExtras();
    int local_start = bundle.getInt("startStepCounter");
    int local_last = bundle.getInt("lastStepCounter");

    Toast.makeText(context,
            "ALARM  "   local_start   " "   local_last,
            Toast.LENGTH_SHORT).show();

}
}
 

Комментарии:

1. Пожалуйста, предоставьте код: D

2. теперь код находится в тексте

3. Где вы обновляете свой счетчик?

4. где ваш счетчик? и какой-либо оператор увеличения?

Ответ №1:

посмотрите на эту часть вашего кода

   final PendingIntent pIntent = PendingIntent.getBroadcast(this,
                1234567, intent, PendingIntent.FLAG_CANCEL_CURRENT);
 

вам необходимо указывать уникальный идентификатор для второй части каждый раз, когда вы используете ожидающее намерение, поэтому вместо 1234567 используйте уникальный идентификатор.