我试图达到目的 IntentService
,什么时候应该使用它?
我尝试从API中了解,但没有足够的细节。
这个和在工作线程上运行长任务有什么类比吗?
我将使用的任何进一步解释和样本 IntentService
非常欢迎。
谢谢,
射线。
我试图达到目的 IntentService
,什么时候应该使用它?
我尝试从API中了解,但没有足够的细节。
这个和在工作线程上运行长任务有什么类比吗?
我将使用的任何进一步解释和样本 IntentService
非常欢迎。
谢谢,
射线。
这和之间有什么比喻吗? 在工作线程上运行长任务?
IntentService
为你处理线程。
我应该什么时候使用它?
一些用例:
AlarmManager
BroadcastReceiver
这和之间有什么比喻吗? 在工作线程上运行长任务?
IntentService
为你处理线程。
我应该什么时候使用它?
一些用例:
AlarmManager
BroadcastReceiver
Android服务是该平台的主力军。它们允许应用程序运行长时间运行的任务并为外部应用程序提供功能不幸的是,由于它们在后台运行并且对于开发人员而言在视觉上并不明显,因此它们可能成为主要问题的根源。如果您已经看到ANR(活动没有响应)或者想知道服务运行的原因何时不应该运行,那么实施不当的服务可能就是问题所在。
可怕的ANR 我们来看看服务导致的两个主要错误: ANR次数。这些会破坏用户的体验并为用户提供强制关闭的选项。这可能导致用户卸载您的应用或后台进程处于中断状态。这样做的原因是服务是从您的调用线程启动的 - 通常这是UI线程。 始终运行服务。虽然Android提供了调度和停止服务的机制,但并非所有开发人员都遵循这些准则。事实上,我见过的很多例子甚至没有提到停止你的服务。这可能导致整体性能降低,用户混淆和电池耗尽。 我想谷歌的Android开发人员认为这已成为一个问题,并在Android 1.5中引入了IntentService类。 IntentService类解决了上述问题,并抽象了开发人员停止的所有线程和服务管理。从应用程序的主线程卸载任务是非常简单和强大的方法。
每当用例是一个需要很长时间但具有常规结束的特定任务时,我会使用它。例如,上面拼写的用例以及诸如以下常规任务: -syncing - 下载资源 - 从各种来源中提取数据并存储它们
当服务在本质上长期运行并且没有明确的结束时,我不建议使用它。我已经看到这样做了,这是一个错误,因为人们最终解决IntentService自行停止这一事实的方式是创建锁以保持handleIntent完成或者如果他们不想阻止下一行请求,他们将通过再次向自己发送startService来重新启动自己。这是非常糟糕的,对于这些类型的场景,你应该只使用一个长期运行的常规Android服务,并确保它绑定(可能是AUTO_CREATE)并处理主线程的工作。