【问题标题】:Android - Running a IntentService multiple timesAndroid - 多次运行 IntentService
【发布时间】:2016-04-18 14:56:38
【问题描述】:

所以我有一个 IntentService 在我运行一次时运行良好。它需要对图像进行操作,然后输出一系列 RGB 值。

但我现在需要它做的是多次运行以批处理出一系列图像。我的第一次尝试涉及在我的主类中调用停止服务,然后创建并运行 IntentService 的新实例。但是当我调用 StopService 时,它​​崩溃了。

有正确的方法吗?

【问题讨论】:

    标签: android android-intent android-intentservice


    【解决方案1】:

    IntentService 在处理完所有请求后停止服务,因此您无需调用stopSelf()

    IntentService不能并行运行任务,所有连续的intent都会进入消息队列,依次执行。

    因此,只需一个接一个地添加它们,并确保清理您的字段以确保独立处理所有 Intent,因为不会重新创建 IntentService 对象/线程。

    【讨论】:

      【解决方案2】:

      关于意图服务你必须知道的:

      “IntentService 类为在单个后台线程上运行操作提供了一个简单的结构。这允许它处理长时间运行的操作而不会影响用户界面的响应能力。”

      不要实现 onStartCommand 方法,因为如果你这样做了,你必须在完成后调用 stopSelf() 或 stopService()。如果您不覆盖此方法,那么 Android 操作系统会处理所有事情。

      正如@Radu Ionescu 所说,intentService 停止工作,当所有请求都到达它的 onHandleIntent 方法时。

      IntentService 开启时会创建一个默认工作线程,并执行到达 onHandleIntent 方法的所有内容。

      只需将所有内容添加到它的队列中,或者如果您需要更长的时间才能添加两个不同的操作,您可以使用 Service,以防止 IntentService 自毁。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-02
        • 1970-01-01
        相关资源
        最近更新 更多