我宣布了一项服务,它将作为一个队列。因此我有一个变量告诉服务它是第一次启动和另一个存储值的变量。
代码如下所示:
public class TTSQueue extends Service {
private Integer lastvol = 0;
private Boolean isFirstStart = true;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Bundle b = intent.getExtras();
Integer vol = b.getInt(TTS.PARAM_LAST_VOL, 0);
if (vol > lastvol) {
lastvol = vol;
}
if (isFirstStart) {
isFirstStart = false;
startAnotherService();
} else {
waitForAnEventAndThen_startAnotherService();
}
}
好的,问题是,这个Service是从一个receiver启动的。并且每次启动时,两者都lastvol
被isFirstStart
重置。我想,如果服务已经创建然后以 Intent 启动,它只会onStartCommand()
再次调用而不重置所有内容。
我还尝试只声明变量并将它们设置为 中的默认值onCreate()
,但这具有相同的效果。我也尝试用 替换Service
,IntentService
但这也无济于事,同样的问题。
我想避免使用SharedPreferences
,因为我认为在这种情况下不一定需要它。(而且我不想浪费用户的写入周期)。
我错过了什么吗?我想这不是因为private
声明,是吗?