Android Service onBind方法接收过时的意图

时间:2017-03-24 10:27:36

标签: android android-intent android-service

我正在实例化服务,如下所示:

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方法使用陈旧密钥接收先前的意图,而不是使用新密钥接收新的意图。

为什么会发生这种情况的任何想法?

2 个答案:

答案 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");
}