在Android中,如果我想做一些后台工作,那么
之间有什么区别创建服务以执行工作,并让Activity启动服务 VS. 创建一个标准的java类来完成工作,并让Activity创建一个类的对象并调用方法,以便在单独的线程中完成工作。
答案 0 :(得分:5)
做你自己的线程是过度的,有解决方案,所以你不必担心并发的困难部分。请查看AsyncTask或IntentService。如果您去寻求服务,请记住您的服务可能随时被杀死。
答案 1 :(得分:3)
嗯,Android提供了一些有用的方法来轻松制作工作线程。查看Looper类定义。它允许您通过Handler发送事件,在另一个线程中一个接一个地执行,或者在不同的线程之间传输消息。
服务没什么特别的。创建服务只是告诉操作系统即使您的活动不可见也需要做一些工作。
答案 2 :(得分:2)
根据您正在构建的应用程序,它可能不是一个选项。
几乎每个网络应用程序都将在服务上具有一些功能,以允许用户在下载某些内容时更改活动的活动。
在RSS阅读器中,例如,您可以单击“全部更新”,并且根据当前数据连接,可能需要比您希望的时间更长的时间。因此,如果您希望用户能够在文件被下载时返回主屏幕并执行任何其他操作,则必须使用服务。
服务允许您在用户不在您的活动上时在后台运行任务。这并不意味着它会一直运行。查看Service lifecycle。
BTW IntentService 是服务。