我的程序是一个活动,用于通过按下按钮识别用户时识别用户,将字符串发送到扩展到服务的另一个类(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类采用新值,但问题是抓住了。始终拥有您第一次输入的值。
如何解决?
感谢您的回答和问候。
答案 0 :(得分:0)
对于您的直接问题,如果您在服务中实施onStartCommand()
,则可以使用新值更新您的服务 - 每次服务收到启动意图时都会调用它,无论它是否已经启动。
与此问题无关,从长远来看,您可能会考虑重新考虑您的设计,因为通过ContentObserver
API观察数据库是一个已解决的问题,从数据库执行此类事件听起来像您正在寻找。