Android 异步任务和守护进程之间的区别

Android 异步任务和守护进程之间的区别,android,service,android-asynctask,daemon,Android,Service,Android Asynctask,Daemon,在这个问题上:,有人回答 服务是守护进程,AsynkTask是后台线程 有人回答说: 服务不是守护进程,因为它没有自己的执行线程 问题:由于这两个进程都使用线程运行,并且都在后台工作,而不是各自的生命周期,因此异步任务和守护进程进程之间的关键区别是什么?根据: 服务: “服务”是在后台运行的特殊软件,如 GNU/Linux上的守护进程。服务没有GUI。“已启动的服务” 在后台运行,直到完成任务、崩溃或停止 由用户或应用程序显式关闭。“绑定服务” 持续,直到不再有应用程序连接或绑定到该服务 As

在这个问题上:,有人回答

服务是守护进程,AsynkTask是后台线程

有人回答说:

服务不是守护进程,因为它没有自己的执行线程


问题:由于这两个进程都使用线程运行,并且都在后台工作,而不是各自的生命周期,因此异步任务守护进程进程之间的关键区别是什么?

根据:

服务:

“服务”是在后台运行的特殊软件,如 GNU/Linux上的守护进程。服务没有GUI。“已启动的服务” 在后台运行,直到完成任务、崩溃或停止 由用户或应用程序显式关闭。“绑定服务” 持续,直到不再有应用程序连接或绑定到该服务

AsyncTasks是为一次性耗时的任务而设计的,无法完成这些任务 运行UI线程。一个常见的例子是获取/处理数据 当按下按钮时

守护进程:

“守护进程”是一个在后台运行的进程,它不拥有GUI服务通常是守护进程,守护进程通常被视为服务。但是,服务和守护进程之间的确切区别是模糊的。一般来说,它们可以被视为同一实体。然而,有些人用“守护进程”来指代软件,用“服务”来指代守护进程提供的操作和API。


我在任何地方都没有遇到过与服务或异步任务一起使用的术语守护进程。对我来说,守护进程线程是来自java的线程,它允许JVM完成未完成的线程。就Android而言,你无法控制你的应用程序进程——你最多可能会扼杀它

Android服务是一个组件——它将其放置在活动组件附近。这是什么意思?它是由系统管理的——它有自己的生命周期,在此期间调用生命周期方法。可以将服务配置为重新创建,也可以将其设置为前台(这样系统就不太可能杀死它)。由于它是一个组件,您可以将其配置为在单独的进程下运行。默认情况下,它没有自己的执行线程-它在UI线程上运行


现在AsyncTask是完全不同的东西,它不是一个组件,所以您不能从上面做任何事情。它有一个后台工作线程。实际上,AsyncTask是一个围绕Executor线程池的包装器,其中包含一些生命周期方法,如onPreExecute、onPostExecute等,。。。它不应该与服务相比较,而应该与加载器相比较。

那么异步任务与守护进程有何不同呢?因此,假设我在启动时使用AndroidManifest.xml中的“ACTION\u BOOT\u COMPLETED”启动一个应用程序,我希望该应用程序在后台继续运行,并在满足特定参数后启动某些任务。我应该使用守护进程还是其他什么?@shirazhockshi-我认为
服务
比Android上的
守护进程
更为常见。@LinX64在这种情况下我为什么要使用服务?你不应该,这是一个建议。但是,每个人之间的差异都是一样的。你可以找到很多教程或例子来做这件事,让我们考虑一下,服务没有GUI。我说,因为我看到很多用户都在使用它,你应该选择哪一个对你的PbpUT来说是最好的。@ ShirazChokshi是的,对于这样长的后台任务,请使用服务—在场景中无法使用AsyncTask。如果愿意,可以从服务内部执行AsyncTask。如果您的后台任务必须执行很长时间,那么您可以使您的服务成为前台—但这需要您设置一个通知—您可以将其视为服务的GUI端。服务将使用此通知报告其工作-就像正在进行的文件下载-进度。