为什么通常不能在广播接收机中调用服务?

时间:2015-02-13 10:32:10

标签: android broadcastreceiver

我一直在阅读android doc,它一直在说我要避免广播接收器中的日志运行过程。他们说接收可以暂时处理操作,但我还没弄清楚为什么会这样。

如果他们允许在广播接收器中长时间运行任务会怎样?

1 个答案:

答案 0 :(得分:0)

在Android中,GUI事件,服务和接收器在所谓的主线程中运行。这个线程非常重要,你不能在那里运行很长的任务(超过几秒钟)。如果您尝试,您将收到应用程序无响应错误,您的应用程序将崩溃。

如果它被允许,例如在旧的Blackberry OS中,那么你可以在执行长任务时阻止用户界面,并且应用程序似乎被冻结。不仅GUI事件会受到影响,每个其他组件(其他服务和接收器)都会阻塞,直到完成为止。

这就是你应该在后台线程中运行长任务的原因。 API已经为这种情况构建了类:AsyncTasks,IntentServices,Loaders。还有一些库可以简化bg处理,比如Volley。