【问题标题】:Android : How to differentiate commands used for StartSevice()Android:如何区分用于 StartService() 的命令
【发布时间】:2012-02-28 13:01:10
【问题描述】:

我有一个问题。我想从我的广播接收器与我的服务通信。所以我使用了 StartService(intent) 方法。在服务端,每次我调用 StartService() 时都会调用 OnStartCommand()。我只需要知道如何在 onStartCommand() 中识别它是从哪里调用它的?

我希望我的问题很清楚。如果不是,请让我澄清...

【问题讨论】:

  • 你可以在你 startService 的意图中加入Extra

标签: android service android-intent


【解决方案1】:

您无法真正检查从哪里调用您,但您可以做一些相关的事情。您可以在传递给 onStartCommand() 的 Intent 中指定某些标签。请注意,onStartCommand() 将意图作为其参数,这将是您发送的意图。每当您从广播接收器发送启动服务的意图时,您都可以在您的意图中指定某些“额外”,然后在您的服务中使用获取这些。

http://developer.android.com/reference/android/app/Service.html#onStartCommand(android.content.Intent, int, int)

顺便说一下,您提供的用例似乎更符合 IntentService 而非常规服务。这是一个服务,它已经在做你正在做的事情:它坐在那里等待意图被触发,然后做出相应的反应:

http://developer.android.com/reference/android/app/IntentService.html

【讨论】:

    【解决方案2】:

    在 onStartCommand 方法中,你用来启动服务的 Intent 作为参数传递。

    onStartCommand(Intent intent, int flags, int startId)
    

    因此,您可以将 Extras 添加到 Intent 以区分调用它的位置。

     intent.putExtra("From", "MainScreen");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-19
      • 1970-01-01
      相关资源
      最近更新 更多