我有一个IntentService,它是从带有 startService(service)的BroadcastReceiver启动的。当我在BroadcastReceiver中获得新信息时,新的信息将通过 startService(service)的意图再次推送到IntentService,但随后服务重新启动。我可以阻止这个吗?我想将新信息推送到IntentService而不重述它。
答案 0 :(得分:1)
意图服务旨在以意图启动,执行其工作并完成。从这个角度来看,它们更像是一个异步。这就是您的intentservice重新启动的原因。
onHandleIntent
应该做一些工作并完成。你可以做一些技巧来阻止它,但这会违背意图服务的性质。
你应该做的是拥有一个经典的服务。如果您收到ANR错误,则应在线程内部执行所有时间密集型操作,或者在服务本身内部执行asynctask。
答案 1 :(得分:0)
我假设您需要共享一些状态来处理服务中的后续Intent。我看到两个解决方案:
如果您可以为每个已处理的Intent恢复并保存状态,则第一个解决方案更安全,因为如果内存不足,您的服务可能会被操作系统杀死。