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



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

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();

正如您所看到的,此代码用setRepeating()启动AlarmManager。如果您看到传递给BroadcastReceiver的意图(实际上是挂起的意图),则会传递两个额外的变量。它们是在应用程序运行期间有效的全局变量。但这个AlarmManager是在后台运行的(也就是说,应用程序将仅在已经管理器对广播接收器的前几次调用中处于活动状态)
我的问题
AlarmManager是否会制作全局变量(用户名和密码)的副本,并维护该副本以便与意图一起传递(作为附加内容)?或者它会引用全局变量(在过程中,当全局变量变为null时,将null作为额外变量传递)?因为,这些值将在广播接收器中使用。

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

在报警管理器上,只需将getApplicationContext作为参数传递给辅助构造函数。

最新更新