我的服务/ IntentService中的变量在每次启动时都会重置

时间:2012-01-19 19:03:10

标签: android variables constructor android-service intentservice

我宣布了一项服务,它将作为一个队列。因此,我有一个变量告诉服务它是第一个开始,另一个是存储值。

代码如下所示:

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();
    }

}

好的,问题是,此服务是从接收器启动的。每次启动时,lastvolisFirstStart都会重置。我想,如果服务已经创建,然后以Intent开始,它只会再次调用onStartCommand()而不会重置所有内容。

我也尝试过只声明变量并将它们设置为onCreate()中的默认值,但效果相同。 此外,我尝试将Service替换为IntentService,但这也无济于事。

我想避免使用SharedPreferences,因为我不认为在这种情况下一定需要它。 (而且我不想浪费用户的写周期。)

我错过了什么吗?我想这不是因为private声明,是吗?

1 个答案:

答案 0 :(得分:0)

这肯定与私人成员没有任何关系。

我不确定是什么问题,但我可以想象其中一个候选人:

  • 服务在第二个请求到达之前终止。
  • Receiver会产生一个新进程,因为它会响应“系统意图”。

您可以通过让您的服务定期记录来评估这种猜测。