消除android中服务中变量的值

时间:2012-10-26 17:44:33

标签: android

我的程序是一个活动,用于通过按下按钮识别用户时识别用户,将字符串发送到扩展到服务的另一个类(alarmChecker)。如果数据库的值已更改,并且您发现更改已启动,则此服务每30秒检查一次。

在主类(MainActivity)中发送字符串我这样做:

  / / Class MainActivity

  Intent intent = new Intent (MainActivity.this, alarmChecker.class);

  Bundle data = new Bundle ();
  data.putString ("user", user);
  intent.putExtras (data);
  pendingIntent = PendingIntent.getService (MainActivity.this, 0, intent, 0);

然后类“alarmChecker”接收如下参数:

 / / class alarmChecker

     @Override
public int onStartCommand(Intent intent, int flags, int startId){
    super.onStartCommand(intent, flags, startId);
// Toast.makeText(this, "MyAlarmService.onStart()", Toast.LENGTH_LONG).show();

 Bundle data = intent.getExtras();

 user = data.getString("user");

 Toast.makeText(getApplicationContext(), "user: "+user, Toast.LENGTH_LONG).show();
}

我想要做的是,如果用户按下Return按钮或退出应用程序并返回主屏幕(MainActivity)并与另一个不同的用户识别,则alarmChecker类采用新值,但问题是抓住了。始终拥有您第一次输入的值。

如何解决?

感谢您的回答和问候。

1 个答案:

答案 0 :(得分:0)

对于您的直接问题,如果您在服务中实施onStartCommand(),则可以使用新值更新您的服务 - 每次服务收到启动意图时都会调用它,无论它是否已经启动。

与此问题无关,从长远来看,您可能会考虑重新考虑您的设计,因为通过ContentObserver API观察数据库是一个已解决的问题,从数据库执行此类事件听起来像您正在寻找。