我有一个Android应用程序,需要在后台和单独的线程上执行工作.对于我的第一个概念验证,我将Application类子类化,并在onCreate()中生成一个执行后台工作的Thread.这很有用.但是,我刚才意识到,过去我曾在这种情况下使用过服务.
问题是,是否有理由对从Service生成的Thread而不是Application.onCreate()生成的Thread进行操作?该服务应该执行"后台"工作(它使用UI线程,除非使用了线程,我知道),它独立于Activity,并且可以在没有Activity可见的情况下运行.使用基于应用程序的线程似乎也完成了所有这些.通过不使用服务,它实际上消除了复杂性,因为Activity只是访问应用程序单例.据我所知,我没有必要绑定到服务.
我会得到使用服务会阻止的生命周期角落情况吗?这是我对这种方法的唯一担忧,但除此之外,我并没有以服务的好处出售.
Dee*_*eeV 11
不同之处在于,如果您希望线程仅在Activity正在运行时在后台运行,或者您希望它在用户离开时继续运行.
即使Activity不再可用,服务也能在后台运行.它们旨在用于您的应用程序在不久的将来没有任何用户参与的情况下继续工作.如果你在Thread中Service运行,即使用户离开应用程序,线程也会继续运行.这有时是有益的,因为用户可能希望您继续下载非常大的文件但不希望应用程序继续在前台运行.然后,几个小时(几天,几个月,几年)之后用户可以重新进入应用程序以读取文件.
但是,如果您正在使用需要根据结果不断更新UI的线程,则在Activity中启动它可能更有利,因为它没有在服务中运行的真正目的.在你的程序中,如果它在Activity而不是Service中,你可以更容易地与UI交谈.(可能有一些性能优势,因为Android不需要在其列表上处理另一个服务,但这纯粹是我的猜测.我没有证据.)
注意:即使活动退出,在活动中创建的线程仍将继续运行.但是,这仅仅是因为应用程序仍在内存中.当Activity不再在视图中时,Activity及其线程的优先级高于从服务线程中删除的内存.
| 归档时间: |
|
| 查看次数: |
5595 次 |
| 最近记录: |