【问题标题】:What happens when a Service receives a start command after calling stopSelf()当服务在调用 stopSelf() 后收到启动命令时会发生什么
【发布时间】:2016-05-12 21:20:24
【问题描述】:

我使用 Activity 绑定到 Service,然后我调用 startService() 让 Service 执行任务。 当服务完成任务时,它会调用stopSelf()。自然,在我的活动解除绑定之前,服务不会停止。当服务调用stopSelf() 后,Activity 再次调用startService() 时会发生什么。一旦 Activity 解除绑定,Service 会被销毁还是会继续运行?

【问题讨论】:

  • 我希望它能够继续运行,但您可能想要测试该场景。
  • @CommonsWare:我希望它也能运行。不知何故,Android 很少像我期望的那样表现(这只是我吗?)。但是,在这种情况下,它的行为符合预期,请参阅下面的答案。

标签: android service android-service android-service-binding


【解决方案1】:

通过反复试验,服务似乎继续运行。 活动对startService() 的调用有效地取消了对stopSelf() 的先前调用。 我的实验代码可以在这里找到。 https://gist.github.com/Proper-Job/56d22b36714e3339be05

【讨论】:

    【解决方案2】:

    您的服务在 stopSelf() 处被销毁

    【讨论】:

    • 不,在 stopSelf() 点它被一个活动绑定,因此它会在那个点继续运行。
    • 实际上它被破坏了,然后你只是泄漏了一个线程和服务对象,至少在线程终止之前。
    • @TaRanLaYal:在它仍然绑定的时候不会。当且仅当没有未完成的绑定连接时,服务才会在 stopService() 调用上被销毁。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多