我有一个应用,该应用在背景(也当屏幕已swiched关闭)做的东西在一个服务。我在以下代码的Activity中启动该服务。服务与AlarmManager
Intent i=new Intent(this, AppService.class);
i.putExtra(AppService.VOL_ALM, amanager.getStreamVolume(amanager.getStreamVolume(AudioManager.STREAM_ALARM)));
PendingIntent pi = PendingIntent.getService(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(pi);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 *60, pi);
在trhe服务的代码看起来是这样的:
public int onStartCommand(Intent intent, int flags, int startId) {
test = intent.getIntExtra(VOL_ALM, 0);
timer = new Timer("TweetCollectorTimer");
timer.schedule(updateTask, 0, 15 * 1000L);
return(START_NOT_STICKY);
}
在服务我必须要改变的变量“test”,并使用它。但我总是失去变量的值,因为onStartCommand有时会执行。我尝试存储具有首选项的变量,但在启动服务时我还需要变量的原始值。 最好的方法是从方法中的意图改变数据“VOL_ALM”。但那有可能吗?
在此先感谢
你能坚持一个数组的SharedPreferences,并用'System.arraycopy(...)'重建。 (0 - 1 VOL_ARM,1 - 2 VOL_ARM)... O(N)...诶.. :(用它来箱前/重新创建每个“报警事件”列表中,我会考虑的架构变化 - 就像IPC消息和与该消息的服务交易。 – bgs