在android中的Alarm Manager中使用intent extras传递值

时间:2012-09-04 03:29:31

标签: android alarmmanager

我想知道这段代码是否有效(我现在无法尝试。此外,我有一些疑问需要清除)。

Intent intent = new Intent(context, AlarmReceiver.class);
intent.putExtra("user",global.getUsername());
intent.puExtra("password",global.getPassword);
PendingIntent sender = PendingIntent.getBroadcast(context, 192837, intent, PendingIntent.FLAG_UPDATE_CURRENT);
// Get the AlarmManager service
Log.v("inside log_run", "new service started");
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, IMMEDIATELY,60000,sender);
finish();

如您所见,此代码使用AlarmManager启动setRepeating()。如果您看到传递给BroadcastReceiver的意图(实际上是挂起的意图),则会传递两个额外内容。这些是全局变量,只要应用程序正在运行就会存在。但是这个AlarmManager意味着要在后台运行(即应用程序仅在alrmamanager对广播接收者的前几次调用中才会存活)
我的问题
AlarmManager是否会复制全局变量(用户名和密码)并保持此副本与意图一起传递(作为附加内容)?或者它会引用全局变量(在过程中,当全局变量变为null时,将null作为额外变量)?因为,这些值将用于广播接收器。

2 个答案:

答案 0 :(得分:2)

我可以看到这种方法产生的问题。我要做的是将两个变量存储在SharedPrefs文件中,并直接从BroadcastReciever访问它们。 SharedPrefs值持续存在,而Android中的“全局变量”则不存在。

答案 1 :(得分:0)

在Alarm Manager上,只需将getApplicationContext作为参数传递给helper构造函数。