我正在实例化服务,如下所示:
try {
Intent intent = new Intent(this, SOMEService.class);
intent.putExtra("key", SOME UUID);
startService(intent);
bindService(intent, myServiceConnection, Context.BIND_AUTO_CREATE);
} catch (Exception e) {
}
在我的服务的onBind方法中,我检查提供的密钥是否与服务中的预期密钥匹配。 每次交易都会刷新此密钥。
问题是,如果我关闭应用程序并重新打开它(强制服务重新绑定),之后onBind方法使用陈旧密钥接收先前的意图,而不是使用新密钥接收新的意图。
为什么会发生这种情况的任何想法?
答案 0 :(得分:1)
启动Service时,即使Android由于资源不足而停止运行,它也会无限运行并重新启动。因此,当您关闭应用程序时,服务将继续运行 - 您只能从中进行操作。如果您希望您的服务仅在应用程序打开时运行,请在应用关闭后停止,然后重新开始。
答案 1 :(得分:0)
您是否尝试检查onStartCommand中的意图?因为您也在启动该服务。
根据文件:
每次客户端明确启动服务时由系统调用 通过调用startService(Intent) https://developer.android.com/reference/android/app/Service.html#onStartCommand(android.content.Intent,int,int)
示例:
public void onStartCommand (Intent intent,
int flags,
int startId)
{
String key = intent.getStringExtra("key");
}