【发布时间】:2014-04-02 01:10:39
【问题描述】:
服务
服务是一个应用程序组件,代表应用程序希望在不与用户交互的情况下执行更长时间运行的操作,或提供功能供其他应用程序使用。
无头片段
可以在不定义用户界面的情况下使用片段。建议使用无头片段进行后台处理。
这里有什么区别?
【问题讨论】:
标签: android android-fragments headless-fragments
服务是一个应用程序组件,代表应用程序希望在不与用户交互的情况下执行更长时间运行的操作,或提供功能供其他应用程序使用。
可以在不定义用户界面的情况下使用片段。建议使用无头片段进行后台处理。
这里有什么区别?
【问题讨论】:
标签: android android-fragments headless-fragments
Services 在进程级别的优先级高于Activitys。当内存不足时,Android 系统会将Services 优先于Activitys,使Services 成为长时间运行任务的理想选择。有关详细信息,请参阅标题为 Processes and Threads 的文章。
此外,当您在原始帖子中陈述以下内容时:
可以在不定义用户界面的情况下使用片段。建议使用无头片段进行后台处理。
你从哪里引用这个?我同意第一句话,但第二句话太笼统了。对于短期任务(例如执行 HTTP 请求等),无头片段可以正常工作。但是,对于执行长时间运行的后台处理(例如下载非常大的文件等),无头片段可能不是您想要的。例如,如果您使用无头片段执行长时间运行的任务并且用户单击“后退按钮”,这将导致 Activity 及其无头片段 Fragment 被销毁。
总而言之,服务是独立于Activity而存在的后台组件,这意味着即使启动服务的Activity被破坏,它也可以继续在后台运行。另一方面,无头片段将始终具有关联的父级Activity。如果承载片段的Activity被系统销毁,那么片段也必须被杀死。
【讨论】:
一般来说:
Headless Fragments 旨在封装数据。无头片段旨在封装可以在各种应用程序组件之间共享的数据(因为它们可以独立于 UI 组件而存在)。
服务旨在封装处理。它们比片段更独立(因此也更重量级,资源更明智);它们位于不同的抽象级别,并且在系统中可以持续更长时间。
两者有重叠。
【讨论】:
Headless fragment-没有ui的片段,主要用于存储大尺寸对象
Service - 它的长期运行任务由android启动,我们可以设置服务的优先级即使应用程序完成服务也不会停止,除非它的工作完成。
【讨论】: