活动可以使用AsyncTask或Handler框架进行后台工作。即使用户已经离开开始他们的活动并且已经调用了该活动的onDestroy,两者仍将继续工作。换句话说,一个活动即使在GUI关闭后也完全可以做后台工作。为什么使用Service进行后台任务?
在这种情况下,使用服务进行后台工作似乎是冗余。服务将什么活动不能做到?谢谢。
活动可以使用AsyncTask或Handler框架进行后台工作。即使用户已经离开开始他们的活动并且已经调用了该活动的onDestroy,两者仍将继续工作。换句话说,一个活动即使在GUI关闭后也完全可以做后台工作。为什么使用Service进行后台任务?
在这种情况下,使用服务进行后台工作似乎是冗余。服务将什么活动不能做到?谢谢。
什么是服务?
有关服务类最混乱实际上都是围绕着它不是什么:
因此服务本身其实很简单,提供了两个主要特点:
Read the rest of the documentation for more info
所以服务的一个实例是你想在自己设定的时间间隔发生的事情,而无需启动一个活动或者别的什么“推出”了。例如,SMSBackup只是一个在后台运行的服务,每隔X分钟轮询一次您的SMS消息并将它们复制到gmail标签中,作为“备份”服务。
当Activity显示的用户界面转到后台时(通过按Home键),并不能保证Activity长时间存在,框架可能会决定停止它。
我认为有意义的是,没有被调用stopService(并因此onDestroy)的服务比被调用的onDestroy的活动更不太可能被杀死。 – Raj 2010-11-02 15:51:57
AsyncTask允许您轻松地执行UI更新,同时清楚地分离UI线程和工作线程逻辑。但是,其他应用程序将无法访问您的AsyncTask。在这种情况下,你需要这些服务。
@BraynDenny答案已经够好了,我想用另一个角度来解释。
首先,你误会了后台任务的意义,服务的定义说:服务不断在后台运行,即使应用程序是不是在前台,这里的长期背景,并不意味着独立的线程,这意味着该服务运行时,你关闭不像活动中的应用,也服务于主线程默认运行,如果你想有一个异步服务使用intentService
的活动是完全能够做到即使在其 GUI已关闭工作背景。
你说的是绝对错误的。 活动,服务是Android的的组成部分,但AsyncTasks或线程不会部件 当你杀死一个活动的AsyncTask的活动也被打死由于活动类中创建的AsyncTask的实例,但是当你开始下载使用前台服务文件,当你关闭的应用程序,就像在Android上的音乐应用程序,即使你关闭应用程序的音乐依然在后台播放,呈现出前景通知
有三个甚至没有被杀不同种类的服务,要了解更多关于他们的信息,请查看此链接https://developer.android.com/guide/components/services.html#CreatingBoundService
向其他应用程序公开非可视化功能是Service的合法使用。这不是问题。但是,计划后台工作是一个很好的用例,可能最好从服务中完成。 – Raj 2010-11-02 15:37:52
您@BryanDenny表示我需要在服务类中启动一个新的thrad来执行网络或数据库操作?对?可能是这样的'线程的线程=新主题(){ @Override 公共 无效的run(){ 尝试{ 而(真){// 网络操作 } }赶上(InterruptedException的E){ Ë .printStackTrace(); } } }; thread.start();'或使用AsyncTask? – AlexSanchez 2013-03-21 02:04:08
@BryanDenny [这是我的问题](http://stackoverflow.com/q/14760507/1067450)。一些帮助是受欢迎的。 – AlexSanchez 2013-03-21 03:29:54