Внесите изменения в другой класс из BroadcastReceiver

У меня есть Activity A и класс B (расширяет BroadCastReceiver). Из А я делаю будильник следующим образом:

            Intent intent = new Intent(getApplicationContext(), TimerAlarmReceiver.class);
            PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0);
            alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);

            Calendar time = Calendar.getInstance();
            time.setTimeInMillis(System.currentTimeMillis());
            time.add(Calendar.SECOND, 5);
            alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, time.getTimeInMillis(), 3000, pendingIntent);

и это это B (имя TimerAlarmReceiver):

public class TimerAlarmReceiver extends BroadcastReceiver { 
    public static long TIME;
    public static Boolean TimerOn=false;

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Alarm went off", Toast.LENGTH_SHORT).show();
        Log.v("Tag", Long.toString(TimeKeeper.Time));
    }
    public static void setTime(long T)
    {           TIME=TimerActivity.DMILLIS;         
    }
}

Что я хочу сделать, так это получить доступ к чему-то вроде статической переменной из onReceive. Я попытался создать общедоступный статический элемент в действии. Журналы показывают правильное установленное значение, пока приложение работает. Но если я принудительно выйду из приложения, журнал onReceive станет 0.

Итак, как мне передать начальное значение B ? Что-то, что сохраняет значение, даже если приложение закрыто (принудительный выход).


person harveyslash    schedule 03.07.2014    source источник


Ответы (1)


Вы можете передать его как одно из дополнений намерения, которое вы используете для создания PendingIntent. Затем он будет доставлен на ваш BroadcastReceiver, и вы сможете извлечь его оттуда.

Другой вариант — сохранить его где-нибудь.

person matiash    schedule 03.07.2014
comment
Я попытался добавить намерение. поместите дополнительно, но это не работает. не могли бы вы дать мне код? - person harveyslash; 03.07.2014
comment
@harvey_slash Проверьте этот пост. Возможно, вам потребуется указать действие, чтобы дополнительные функции работали. - person matiash; 03.07.2014