【问题标题】:Using AsyncTask in Service在服务中使用 AsyncTask
【发布时间】:2016-11-22 22:19:06
【问题描述】:

这是在服务(不是 IntentService)中使用 AsyncTask 的正常做法。还是以其他方式创建后台线程更好?

【问题讨论】:

    标签: android android-asynctask android-service


    【解决方案1】:

    这是在 Service 中使用 AsyncTask 的正常做法吗

    没有。 AsyncTask的重点是在后台工作完成后,可以在主应用线程上做一些工作。服务很少(如果有的话)需要在主应用程序线程上工作。

    或者以其他方式创建后台线程更好?

    是的:new Thread() 将是直接替代AsyncTask 的有力候选人。在其他情况下,某种形式的线程池可能有意义。

    【讨论】:

    • 不知道为什么有人投了反对票。他直接而准确地回答了这些问题。 AsyncTask,虽然可以工作,但它不是最佳实践。使用你自己的线程来做后台工作。如果需要执行大量串行任务,甚至可能是您自己的 HandlerThread + Handler 实现来干净地处理工作。..
    • 这是一个准确的答案。不值得投反对票。
    • 另外一点要补充的是,使用服务的目的是为了长时间运行的操作(假设我们在后台流式传输音乐,我们正在下载大数据,我们正在上传大数据)所以这时候你会避免使用 AsyncTask。使用 AsyncTask 是为了短期操作,没有重量和冗长的操作。
    【解决方案2】:

    不,AsyncTask 旨在在远离 UI 线程的后台线程中运行一些短期工作。它有回调,允许它在完成后修改 UI 线程。

    如果您需要在服务中使用单独的线程,请使用 new Thread() 创建一个线程

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-01
      • 2016-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多