3

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

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 作为额外的传递)?因为,这些值将在广播接收器中使用。

4

2 回答 2

2

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

于 2012-09-04T05:31:01.180 回答
0

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

于 2014-04-30T04:13:32.703 回答