Android 关于IntentService的进一步解释

Android 关于IntentService的进一步解释,android,android-intent,Android,Android Intent,我想知道它的用途,我应该什么时候使用它 我试图从API中理解,但没有足够的细节 这和在工作线程上运行长任务有什么相似之处吗 欢迎对我为什么使用IntentService作进一步解释和示例 谢谢 雷 这和我的想法有什么相似之处吗 在工作线程上运行长任务 IntentService为您处理线程 我应该什么时候用 一些用例: 用于处理由AlarmManager触发的报警 用于处理清单注册的BroadcastReceiver捕获的其他事件 用于处理应用程序小部件触发的事件(基于时间的更新、按钮单击等)

我想知道它的用途,我应该什么时候使用它

我试图从API中理解,但没有足够的细节

这和在工作线程上运行长任务有什么相似之处吗

欢迎对我为什么使用
IntentService
作进一步解释和示例

谢谢

这和我的想法有什么相似之处吗 在工作线程上运行长任务

IntentService
为您处理线程

我应该什么时候用

一些用例:

  • 用于处理由
    AlarmManager触发的报警
  • 用于处理清单注册的BroadcastReceiver捕获的其他事件
  • 用于处理应用程序小部件触发的事件(基于时间的更新、按钮单击等)

    • Android服务是该平台的主力军。它们允许应用程序运行长时间运行的任务,并为外部应用程序提供功能。不幸的是,由于它们在后台运行,并且对开发人员来说并不明显,因此它们可能是一个令人头疼的问题。如果您看到一个ANR(活动没有响应),或者想知道为什么一个服务在不应该运行的情况下运行,那么一个实现不佳的服务可能就是问题所在

      可怕的ANR 让我们来看看服务失误的两个主要原因: 安尔斯。这些会破坏用户的体验,并为用户提供强制关闭的选项。这可能导致用户卸载您的应用程序或后台进程处于中断状态。原因是服务是从调用线程启动的——通常是UI线程。 始终运行服务。尽管Android提供了调度和停止服务的机制,但并非所有开发人员都遵循这些准则。事实上,我看到的很多例子甚至没有提到停止您的服务。这可能导致整体性能降低、用户混乱和电池耗电。
      我想谷歌的安卓开发者看到了这一点,于是在安卓1.5中引入了IntentService类。IntentService类解决了上述问题,并从开发人员那里抽象了线程和服务停止的所有管理。这是从应用程序的主线程卸载任务的一种非常简单和强大的方法。

      每当用例是一个需要很长时间但有固定结尾的特定任务时,我都会使用它。例如,上面拼写的用例以及常规任务,例如: -同步 -下载资源 -从各种来源提取数据并存储它们


      当服务在本质上是长期运行的,并且没有明确的目的时,我不建议使用它。我见过这样做,这是一个错误,因为人们最终绕过IntentService本身停止这一事实的方式是创建锁以阻止HandleContent完成,或者如果他们不想阻止接下来的请求,他们将通过再次向自己发送startService来重新启动自己。这很可怕,对于这些类型的场景,您应该只使用长时间运行的常规Android服务,并确保它已绑定(可能是自动创建)并在主线程之外处理工作。

      为什么我最好使用IntentService来“处理AlarmManager/manifest registered BroadcastReceiver触发的警报”,它能做什么,常规服务无法做到?@rayman:它为你处理后台线程和工作队列。我想我知道了,但mybe你知道一些我可以检查的例子,所以我可以看到使用与否的细微差别?谢谢。@rayman:马克一如既往地给出了简单而令人敬畏的答案。有一个问题,我们是否可以使用
      IntentService
      作为我所有网络相关任务的线程管理器,而不是上面提到的几点?