3 回答
TA贡献1874条经验 获得超12个赞
可能你已经阅读了关于它们的文档描述,我不会重复它们,而是我会尝试用自己的话来回答,希望它们会帮助你。
服务就像一个活动,但没有接口。例如,如果您想要获取天气,则不会为其创建空白活动,为此您将使用服务。
线程是一个线程,可能你已经从其他部分知道了。您需要知道无法从线程更新UI。您需要使用Handler,但请进一步阅读。
AsyncTask是一个建议使用的智能线程。智能因为它可以帮助它的方法,并且有三种方法在UI线程上运行,这很好地更新UI组件。
我经常使用Services,AsyncTasks。线程较少,或根本没有,因为我可以用AsyncTask做几乎所有事情。
TA贡献1802条经验 获得超10个赞
这是您问题的最简单答案
线
是与主线程“并行”运行的执行单元是一个重要的点,除了主线程之外,您无法从此处的任何线程更新UI组件。
的AsyncTask
是一个特殊的线程,它为您提供更新UI的帮助方法,所以基本上您可以更新UI甚至AsyncTask将在后台线程上运行。不需要明确地进行进程间通信处理。
服务
解决上面的问题,因为它与调用它的活动分开存在,所以它甚至可以在活动被销毁时继续运行,它在主线程中运行(小心ANR)使用后台服务(扩展IntentService它会自动创建工作线程)为了你)。服务就像没有UI的活动,有利于长期任务
TA贡献1856条经验 获得超5个赞
我希望有人在几天前告诉我的更多信息:
您可以在“活动”和“服务”之间共享全局变量(如线程)。
只要存在活动或服务,您的应用程序及其所有全局变量就不会被删除。
如果您的应用程序中有一个服务实例且操作系统需要资源,它首先会终止您的活动,但只要有服务,操作系统就不会将您的应用程序与其全局变量一起消灭。
我的用例是这样的:我在全局空间中有一个连接到服务器的线程和一个显示结果的Activity。当用户按下主页按钮时,活动将转到后台并启动新服务。然后,此服务从线程读取结果,并在需要时在通知区域中显示信息。我不担心操作系统会破坏我的Activity,因为我知道只要服务正在运行它就会破坏线程。
- 3 回答
- 0 关注
- 460 浏览
添加回答
举报