このコードが機能するかどうかを知りたいです (今すぐ試すことはできません。さらに、クリアしなければならない疑問がいくつかあります)。
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
場合は、2 つのエクストラが渡されています。これらは、アプリケーションが実行されている限り存続するグローバル変数です。しかし、これAlarmManager
はバックグラウンドで実行されることを意図しています (つまり、アプリケーションはブロードキャスト受信者への alrmamanager の最初の数回の呼び出しに対してのみ有効です)
私の質問
AlarmManager はグローバル変数 (ユーザー名とパスワード) のコピーを作成しますか?このコピーを維持して、インテントとともに (エクストラとして) 渡されるようにしますか? それとも、グローバル変数を参照しますか (プロセスで、グローバル変数が null になったときにエクストラとして null を渡します)? なぜなら、これらの値は放送受信機で使用されるからです。