当您学习为 Android 开发时,您会了解到如果在 ui 线程内运行任何类型的进程(花费超过 5 秒),系统将显示臭名昭著的 ANR 消息。就在那时,他们引入了邪恶的怪物……AsyncTask。一开始你把这个类看作是你的救星,但后来你意识到它是开发中最大的问题......处理旋转或 ui 事件变得如此成问题,甚至是痛苦的。 你们怎么看……AsyncTasks 值得麻烦吗?无论屏幕旋转如何,任何其他方法都可以减少执行长时间运行的任务的问题? 我猜你可能会说,嘿,你为什么不把它变成一个服务……是的,这是一个解决方案,但让我们回到我真正的问题。为什么我们不只使用服务并完全停止使用 AsyncTasks...它们到底有用吗?
最佳答案
在开发过程中,选择合适的执行组件总是好的。您需要明确您的需求,并根据它在 Service
或 AsyncTask
之间进行选择。
服务是独立于任何其他组件存在的 Android 组件。 Activity 可能来来去去,但如果您愿意,服务可以一直存在。它们扮演多种角色,从管理多个 Activity 所依赖的状态到充当 cron 作业再到处理更长的应用小部件更新。
AsyncTask 是一个安排在主应用程序线程之外执行某些工作的类。对于 AsyncTask 的实现者和用户而言,它如何发挥这种魔力通常并不重要。实际上,它使用线程池和工作队列。 AsyncTask 使用 Handler 来帮助安排要在主应用程序线程上完成的部分工作(例如,通知用户进度更新)。
有关更多说明,请参阅它们之间的区别。
关于android - 当您可以使用服务时,为什么还要使用 AsyncTasks?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11822039/