在android中启动服务时,ui线程是否需要等待才能启动?

艾坦

我在为自己的活动编写测试时遇到了一个问题,这使我对此问题感到疑惑。我正在使用ActivityInstrumentationTestCase2,并且当单击按钮并且它可以正常工作时,我的活动使用startService将意图发送到服务。(我的服务是singelton,所以我可以知道它是否正在运行)
在测试中,我正在执行以下操作:

  1. 断言服务未运行。
  2. 发送意图以启动服务(或按两次按钮都尝试)
  3. 等待服务启动并断言它正在运行

听起来很简单,但是当我尝试使用Thread.sleep等待时,该服务将无法启动,与当我尝试进行繁忙的等待时相同。因此,我认为它将需要完成testMethod才能启动服务,并且我进行了以下设计:

Thread helper;

@Override
tearDown() {
    if (helper) join helper
    super.tearDown
}

testMethod() {
    assert stuff
    send intent
    start helper
    finish
}

helperMethod() {
    wait for service to start
    assert stuff
}

这实际上有效,我的猜测是它允许主线程完成testMethod,然后处理意图并完成我的测试。这种行为似乎很奇怪,因为我希望该服务将立即启动,因为它在同一线程上,或者休眠足够的时间会让该服务启动。因此,谁知道服务启动的条件是什么,何时启动?

还阮

服务在主线程上运行。因此,如果您拨打电话,Thread.sleep()则直到时间到时才启动服务。

从服务文档http://developer.android.com/reference/android/app/Service.html

请注意,服务与其他应用程序对象一样,在其托管过程的主线程中运行。这意味着,如果您的服务要执行任何占用大量CPU资源(例如MP3播放)或阻塞(例如网络)的操作,则它应产生自己的线程来执行此工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在android中启动服务时,ui线程是否需要等待才能启动?

来自分类Dev

在Android中启动新活动时需要等待很长时间

来自分类Dev

Android:在服务中启动线程

来自分类Dev

Android重新启动服务时,在Android服务中启动的线程会如何处理?

来自分类Dev

当Android重新启动服务时,在Android服务中启动的线程会如何处理?

来自分类Dev

Android-等待线程执行后再启动服务

来自分类Dev

Android-等待线程执行,然后再启动服务

来自分类Dev

在异步生成器函数中是否需要等待?

来自分类Dev

在实际关闭主线程之前,是否总是需要等待每个线程终止?

来自分类Dev

是否需要等待所有期货才能保证其执行?

来自分类Dev

我是否需要等待样式表加载才能使用 css 选择器?

来自分类Dev

在单独的线程中启动服务

来自分类Dev

在Android 4.3中启动服务时出错

来自分类Dev

Android应用需要大量时间才能启动

来自分类Dev

启动并等待新线程而不会阻塞UI线程

来自分类Dev

在Android中启动服务

来自分类Dev

当您的线程可能需要等待很长时间时,使用backgroundworker很好

来自分类Dev

startForeground如何影响在android服务中启动的线程?

来自分类Dev

在启动时启动Android服务

来自分类Dev

芹菜链:需要等待才能得到结果吗?

来自分类Dev

启动时服务线程死

来自分类Dev

Gnome“调整”中的更改是否需要重新启动才能生效?

来自分类Dev

双启动时Windows是否需要自己的启动分区?

来自分类Dev

Python:启动psql查询,不要等待响应

来自分类Dev

如何等待线程启动?

来自分类Dev

在BroadcastReceiver中启动新线程是否安全?

来自分类Dev

更新html文件时是否需要重新启动node.js的http服务器

来自分类Dev

(USB)驱动器是否需要主启动记录才能以UEFI模式启动?

来自分类Dev

Jenkins是否等待当前测试启动的线程终止以启动另一个测试?

Related 相关文章

  1. 1

    在android中启动服务时,ui线程是否需要等待才能启动?

  2. 2

    在Android中启动新活动时需要等待很长时间

  3. 3

    Android:在服务中启动线程

  4. 4

    Android重新启动服务时,在Android服务中启动的线程会如何处理?

  5. 5

    当Android重新启动服务时,在Android服务中启动的线程会如何处理?

  6. 6

    Android-等待线程执行后再启动服务

  7. 7

    Android-等待线程执行,然后再启动服务

  8. 8

    在异步生成器函数中是否需要等待?

  9. 9

    在实际关闭主线程之前,是否总是需要等待每个线程终止?

  10. 10

    是否需要等待所有期货才能保证其执行?

  11. 11

    我是否需要等待样式表加载才能使用 css 选择器?

  12. 12

    在单独的线程中启动服务

  13. 13

    在Android 4.3中启动服务时出错

  14. 14

    Android应用需要大量时间才能启动

  15. 15

    启动并等待新线程而不会阻塞UI线程

  16. 16

    在Android中启动服务

  17. 17

    当您的线程可能需要等待很长时间时,使用backgroundworker很好

  18. 18

    startForeground如何影响在android服务中启动的线程?

  19. 19

    在启动时启动Android服务

  20. 20

    芹菜链:需要等待才能得到结果吗?

  21. 21

    启动时服务线程死

  22. 22

    Gnome“调整”中的更改是否需要重新启动才能生效?

  23. 23

    双启动时Windows是否需要自己的启动分区?

  24. 24

    Python:启动psql查询,不要等待响应

  25. 25

    如何等待线程启动?

  26. 26

    在BroadcastReceiver中启动新线程是否安全?

  27. 27

    更新html文件时是否需要重新启动node.js的http服务器

  28. 28

    (USB)驱动器是否需要主启动记录才能以UEFI模式启动?

  29. 29

    Jenkins是否等待当前测试启动的线程终止以启动另一个测试?

热门标签

归档