我宣布了一项服务,它将作为一个队列。因此,我有一个变量告诉服务它是第一个开始,另一个是存储值。
代码如下所示:
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();
}
}
好的,问题是,此服务是从接收器启动的。每次启动时,lastvol
和isFirstStart
都会重置。我想,如果服务已经创建,然后以Intent开始,它只会再次调用onStartCommand()
而不会重置所有内容。
我也尝试过只声明变量并将它们设置为onCreate()
中的默认值,但效果相同。
此外,我尝试将Service
替换为IntentService
,但这也无济于事。
我想避免使用SharedPreferences
,因为我不认为在这种情况下一定需要它。 (而且我不想浪费用户的写周期。)
我错过了什么吗?我想这不是因为private
声明,是吗?
答案 0 :(得分:0)
这肯定与私人成员没有任何关系。
我不确定是什么问题,但我可以想象其中一个候选人:
Receiver
会产生一个新进程,因为它会响应“系统意图”。您可以通过让您的服务定期记录来评估这种猜测。