首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么我应该使用android服务而不是java线程?

为什么我应该使用android服务而不是java线程?
EN

Stack Overflow用户
提问于 2012-03-16 04:55:38
回答 7查看 8.2K关注 0票数 19

我把android服务和java线程搞混了。

请帮助我了解我应该在哪种场景下使用它们。

据我所知

服务在后台运行,线程也在后台运行。

服务将用于网络操作或在后台播放mp3等活动,线程也是如此。

那么它们之间的实际区别是什么,以及何时使用它们。

EN

回答 7

Stack Overflow用户

发布于 2012-03-16 05:41:48

让我打个比方。

活动和服务类似于项目。

活动就像外部项目。这是客户端(用户)看到的内容。

服务就像内部项目。一个外部项目可能有多个内部项目,也可能根本没有。

您可以“暂停”外部项目,但支持它的内部项目仍然可以继续。

主线程就像公司中的老板

老板永远不应该被太多的工作拖累,因为他不应该在会议上迟到(UI冻结),否则客户(用户)会不高兴。

线程就像是公司里的员工。

你拥有的越多,你可以同时做的事情就越多,前提是你有足够的设备(CPU速度)来满足所有这些需求。

多个员工可以同时在同一个项目上工作,但老板实际上应该只在活动上工作。

票数 36
EN

Stack Overflow用户

发布于 2012-03-16 05:01:41

Always:应用程序的服务不仅可供应用程序的其他组件使用,还可供其他应用程序使用。

服务用于程序的非GUI部分。

主要是服务是更独立的东西,而不是线程。服务是比线程更持久的东西。服务是比线程更复杂的东西。

顺便说一句,线程不只在后台运行。在前台运行的也是一个线程。

票数 6
EN

Stack Overflow用户

发布于 2013-11-11 15:54:13

我相信主要的区别在于Android系统的态度。服务是android基础设施的一部分,因此android将服务视为应用程序的工作部分,并将终止服务作为最后的选择。此外,如果您的服务被终止(例如,由于内存不足),您可以说系统在资源再次可用时自动重新启动它。此外,您可以调整服务优先级,以使其与前台活动一样重要。至于线程,android不会将线程识别为必须保留的重要部分。因此,通常的线程最终会有更多的机会被杀死。

例如,如果你有一个启动工作线程然后进入后台的活动,因为android不会将线程识别为工作部分,它可能会认为应用程序什么也不做,因为没有活动或服务在运行,并且会杀死整个应用程序,包括工作线程。

因此,当你启动一项服务时,你是在告诉系统:“嗨,我在这里做一些生意,请在我完成之前不要杀了我。”Android会关注你的请求。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9728032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档