【问题标题】:Android Widget: Service vs Async TaskAndroid 小部件:服务与异步任务
【发布时间】:2011-03-10 13:24:07
【问题描述】:

对于小部件,我们可以从服务中调用异步任务吗?

我目前有一个小型应用程序,可以查找现场体育比分并显示相同的结果。主类调用异步任务。异步任务调用 2 个过程。第一个解析 XML 文件并获取 html 链接。第二个读取该html文件。 现在我想将此应用程序转换为主屏幕小部件。

我可以从服务中调用我的异步任务吗? 任何指向示例的指针?

请帮忙。

问候, 山姆

【问题讨论】:

  • 老兄接受答案以提高您的评分...

标签: android asynchronous service widget


【解决方案1】:

您无需在服务中创建 AsyncTask。 Service 已经在后台线程上运行,因此您可以在 Service 的 doInBackground 中执行任何密集任务。您应该仍然可以在 Service 中调用 AsyncTask,但此时不需要使用 AsyncTask。

Here 是一个带有 Service 的小部件示例。

【讨论】:

    【解决方案2】:

    如果原始活动和服务在同一个包中,或者一个适当地依赖于另一个,那么您可以毫无问题地调用同一个异步任务。只要异步任务是通用格​​式,因此它将数据返回给调用它的任何对象(通过回调或处理程序),而不是总是将结果发布到应用程序的 UI,就不会有大问题。

    【讨论】:

    【解决方案3】:

    以下是基本区别:

    线程或异步任务在后台线程中执行它们的任务,因此它们不会阻塞主线程,而服务在主线程中执行它的工作。所以如果一个服务正在执行一个密集的任务,比如调用一个 web 服务,它可能会阻塞主线程直到它完成。因此,对于密集型任务,服务应该在后台线程中运行。

    总结,Thread(Async Task)在后台执行任务(不阻塞主线程),Service可以阻塞主线程直到完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-23
      • 1970-01-01
      • 2013-11-14
      • 1970-01-01
      • 1970-01-01
      • 2018-07-01
      相关资源
      最近更新 更多