Android中无头片段和服务有什么区别?

Yes*_*sha 22 android android-fragments headless-fragments

服务

服务是一种应用程序组件,表示应用程序希望在不与用户交互的情况下执行较长时间运行的操作,或者为其他应用程序提供使用的功能.

无头片段

可以在不定义用户界面的情况下使用片段.建议使用无头碎片进行后台处理.

这有什么区别?

Ale*_*ood 43

Services Activity在进程级别的优先级高于s.当内存不足时,Android系统将优先ServiceActivitys,使其Service成为长时间运行任务的理想选择.有关更多信息,请参阅标题为进程和线程的文章.

此外,当您在原始帖子中声明以下内容时:

可以在不定义用户界面的情况下使用片段.建议使用无头碎片进行后台处理.

你在哪里引用这个?我赞同第一句,但第二句太笼统了.对于短期运行的任务(例如执行HTTP请求等),无头片段工作正常.但是,对于执行长时间运行的后台处理(例如下载非常大的文件等),无头片段可能不是您想要的.例如,如果您使用无头片段执行长时间运行的任务,并且用户单击了"后退按钮",则会导致Activity无头和无头部分Fragment被破坏.

总而言之,服务是一个独立于a的后台组件Activity,这意味着它可以继续在后台运行,即使Activity启动服务的服务被破坏也是如此.另一方面,无头片段将始终具有关联的父级Activity.如果Activity主机片段被系统破坏,则片段也必须被杀死.


blu*_*lds 31

一般来说:

无头片段用于封装数据.无头片段旨在封装可以在各种应用程序组件之间共享的数据(因为它们可以独立于UI组件而存在).

服务旨在封装处理.它们比片段更独立(因此也更重,资源更明智); 它们处于不同的抽象层次,并且可以在系统中持续更长时间.

两者之间有重叠.