我想知道。当我在IntentService中使用AsyncTask时会发生什么。
答案 0 :(得分:2)
一旦onHandleIntent()
返回,如果没有更多未完成的工作要完成,服务将被销毁。如果AsyncTask
仍在运行,您将泄露该线程。我们无法保证您的流程能够保持足够长的时间,以便AsyncTask
完成其工作。
由于IntentService
已经为您提供了一个后台线程 - onHandleIntent()
运行的后台线程 - 因此不需要另一个后台线程。只需将doInBackground()
逻辑放在onHandleIntent()
的{{1}}。
此外,通常,不需要在任何服务中使用IntentService
,因为服务无需在主应用程序线程上执行任何操作。
答案 1 :(得分:0)
你可以在意图服务中使用异步任务,它将完美运行。因为,intentService是在没有Ui交互的情况下运行后台任务,但是最好不要在intentService中使用异步任务。当你使用时,它会很有帮助。在intentService中使用多个长操作,否则会触发设备
答案 2 :(得分:0)
我认为在IntentService中执行AsyncTask完全是个坏主意。我在JobIntentService中有AsyncTask的经验,这与IntentService不同,但会导致崩溃。只需将代码放在onHandleIntent()的doInBackground()内即可。