0

我的程序是一个活动,用于在通过按下按钮识别用户时识别用户,将字符串发送到扩展至服务的另一个类(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();
}

而我想做的是如果用户按下返回按钮或退出应用程序并返回到主屏幕(MainActivity)并与另一个不同的用户进行识别,alarmChecker 类会采用新值​​,但问题是抓取。始终具有您第一次输入的值。

如何解决?

感谢您的回答和问候。

4

1 回答 1

0

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

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

于 2012-10-26T18:08:41.940 回答