从BroadcastReceiver更改另一个类

时间:2014-07-03 05:23:12

标签: android android-intent android-activity android-alarms

我有一个活动A和一个B类(扩展BroadCastReceiver)。从A,我发出这样的警报:

            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?即使应用程序关闭也会保留价值的东西(强制退出)。

1 个答案:

答案 0 :(得分:0)

您可以将其作为用于创建PendingIntent的Intent的附加内容之一传递。然后它会发送到您的BroadcastReceiver,您可以在那里提取它。

另一种选择是store it somewhere