活动可以使用AsyncTask或Handler框架进行后台工作。即使用户已经离开启动它们的活动并且已经调用了活动的onDestroy,两者都将继续工作。换句话说,即使在GUI关闭后,活动也完全能够进行后台工作。
在这种情况下,将Service用于后台工作似乎是冗余。服务带来了什么活动无法做到的表格?感谢。
答案 0 :(得分:8)
什么是服务?
关于Service类的大多数混淆实际上都围绕着它不是:
因此,服务本身实际上非常简单,提供两个主要特征:
Read the rest of the documentation for more info
因此,服务的一个实例将是您希望在设定的时间间隔内发生的事情,而无需启动活动或其他任何“启动”它。例如,SMSBackup只是一种在后台运行的服务,每隔X分钟轮询一次您的SMS消息并将它们复制到gmail标签中,作为“备份”服务。
答案 1 :(得分:0)
当Activity显示的UI进入后台时(按主页按钮),不能保证Activity长时间存在,框架可能会决定停止它。
答案 2 :(得分:0)
AsyncTask允许您轻松执行UI更新,同时还可以清楚地分离UI线程和工作线程逻辑。但是,其他应用程序将无法访问您的AsyncTask。在这种情况下,您需要这些服务。
答案 3 :(得分:0)
@BraynDenny答案已经足够好了,我想从另一个角度来解释。
首先你误解了后台任务的含义,服务的定义说服务连续在后台运行,即使应用程序不在前台,这里的术语背景并不意味着单独的线程,它意味着如果你想要异步服务使用intentService ,那么关闭应用程序时服务会像Activity一样运行,服务默认在主线程中运行
即使在活动完成后,活动也完全能够进行后台工作 GUI已关闭。
你说的是绝对错误的。 活动,服务是Android的组件,但AsyncTasks或Threads不是组件 当你杀死一个活动时,活动中的Asynctask也会被杀死,因为Asynctask实例是在活动类中创建的,但当你开始使用前台服务下载文件时,即使你在关闭应用程序,就像Android中的音乐应用程序一样,即使您关闭应用程序,音乐仍然在后台播放,显示前景通知
有三种不同类型的服务,要了解有关它们的更多信息,请查看此链接https://developer.android.com/guide/components/services.html#CreatingBoundService