对于小部件,我们可以从服务中调用异步任务吗?
我目前有一个小应用程序,可查找实时体育比分并显示相同内容。主类调用异步任务。异步任务调用2个过程。第一个解析XML文件并获得HTML链接。第二个读取该html文件。 现在我想将此应用程序转换为主屏幕小部件。
我可以在服务中调用异步任务吗? 有关示例的指示吗?
请帮忙。
此致 萨姆
答案 0 :(得分:4)
您无需在服务中创建AsyncTask。该服务已在后台线程上运行,因此您可以执行您在服务中的doInBackground中执行的任何密集任务。您仍然可以在服务中调用AsyncTask,但此时您不需要使用AsyncTask。
Here是带有服务的小部件示例。
答案 1 :(得分:0)
如果原始活动和服务在同一个包中,或者一个适当地依赖于另一个,那么您可以毫无问题地调用相同的异步任务。只要异步任务是通用格式,所以它将数据提供回任何调用(通过回调或处理程序),而不是总是将结果发布到应用程序的UI,不会有任何重大问题。
答案 2 :(得分:0)
以下是基本差异:
线程或异步任务在后台线程中执行它们的任务,因此它们不会阻塞主线程,而服务在主线程中执行它的工作。因此,如果服务正在执行密集型任务(如调用Web服务),它可能会阻塞主线程直到完成。因此,对于密集型任务,服务应该在后台线程中运行它。
摘要,线程(异步任务)在后台执行任务(不是阻塞主线程),服务可以阻止主线程直到完成。