При использовании AlarmManager Intent.PutExtra работает только при перестроении проекта. - PullRequest
0 голосов
/ 16 марта 2020

Мои сигналы тревоги инициализируются следующим образом, используя пользовательский класс сигналов тревоги:

                    //j represents the day of the week, starting on sunday
                    Intent myIntent;
                    PendingIntent pendingIntent;

                    TimeSpan instTime = instAlarm.AlarmTime;

                    Calendar currentDate = Calendar.GetInstance(Resources.Configuration.Locale);
                    int year = currentDate.Get(CalendarField.Year);
                    int month = currentDate.Get(CalendarField.Month);
                    currentDate.Set(CalendarField.DayOfWeek, j+1);
                    int day = currentDate.Get(CalendarField.DayOfMonth);


                    Calendar calInst = new GregorianCalendar(year, month, day, instTime.Hours, instTime.Minutes, 0);

                    myIntent = new Intent(this, typeof(AlarmReceiver));

                    myIntent.PutExtra("theName", instAlarm.Name);
                    myIntent.PutExtra("Description", instAlarm.Description);
                    myIntent.PutExtra("Gauntlet", instAlarm.Gauntlet);
                    myIntent.PutExtra("Daily", instAlarm.Daily);

                    pendingIntent = PendingIntent.GetBroadcast(Application.Context, 0, myIntent, 0);
                    manager.SetExact(AlarmType.RtcWakeup, calInst.TimeInMillis, pendingIntent);

, а затем получает дополнительные строки и логические значения:

        string instName = intent.GetStringExtra("theName").ToString();
        string instDescription = intent.GetStringExtra("Description").ToString();
        bool Gauntlet = intent.GetBooleanExtra("Gauntlet", false);
        bool Daily = intent.GetBooleanExtra("Daily", false);


        Toast.MakeText(Android.App.Application.Context, instName + "|" + instDescription, ToastLength.Long).Show();

Поэтому, когда я делаю аварийный сигнал, первый отображает имя и описание правильно, но любые аварийные сигналы, сделанные после этого, отображают тот же текст, что и первый. Это продолжается, даже если сигнал тревоги удален, приложение закрыто и снова открыто, или если я выйду и снова войду в режим отладки. Единственный способ изменить его - это перестроить решение.

Я не знаком с AlarmManager или Intents, поэтому любая помощь будет признательна.

Спасибо.

...