【问题标题】:Question regarding a specific "difference" between Service and IntentService关于 Service 和 IntentService 之间特定“差异”的问题
【发布时间】:2011-05-26 19:49:13
【问题描述】:

我们已经在 Android 中使用 Service 和 IntentServices 进行了一些测试。据我们了解,IntentService 的好处之一是它自己的线程和工作队列...... 经过测试,我们注意到如果您向两个服务发送 100 个意图,它们都将开始按顺序执行...

这有点像 IntentService 的预期,因为它是工作队列,但 Android 如何处理对非多线程服务的多个请求?因为它似乎也有某种底层工作队列?或者可能是 Android 系统本身保留的某种 Intents-queue ? 如果是这样,有什么方法可以附加到它上,例如查看它的长度/大小?

【问题讨论】:

    标签: android service queue


    【解决方案1】:

    但是对于对非多线程服务的多个请求,Android 的行为如何?

    startService() 的调用在发送方的主应用程序线程的消息队列中排队,就像对任何 GUI 操作(例如,setText())的调用、对startActivity() 的调用等等一样。

    IntentService 在服务本身内部有第二个队列,用于接收到的Intents 由后台线程处理。

    【讨论】:

    • 好吧,这有点解释了,但只是为了好玩(如果可以这样称呼的话),假设您有两个正在运行的应用程序,它们都向同一个服务发送多个 startService() 请求......什么订单会是什么?因为根据您的解释,将涉及两个消息队列,那么在将下一个 Intent 发送到服务本身的那些末尾是否有某种“监管机构”?顺便说一句,感谢您的帮助,马克,再次...
    • @TiGer:“假设您有两个正在运行的应用程序,它们都向同一个服务发送多个 startService() 请求......顺序是什么?” -- 订单将是不确定的。我们可以说的最好的情况是每个客户端的请求将按照它们发送它们的顺序执行,但是这些请求可能会根据每个客户端的主应用程序线程实际处理这些请求的时间来交错。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-01
    • 2015-11-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多