Android 为什么服务通常可以';不能在广播接收机中呼叫吗?
我一直在读安卓文档,它不断地告诉我,为了避免广播接收器中的日志运行过程。他们说receive可以在短时间内处理操作,但我还不明白为什么会这样Android 为什么服务通常可以';不能在广播接收机中呼叫吗?,android,broadcastreceiver,Android,Broadcastreceiver,我一直在读安卓文档,它不断地告诉我,为了避免广播接收器中的日志运行过程。他们说receive可以在短时间内处理操作,但我还不明白为什么会这样 如果允许在广播接收器中长时间运行任务,会发生什么情况?在Android中,GUI事件、服务和接收器在所谓的主线程中运行。这个线程非常重要,您将无法在那里运行长任务(超过几秒钟)。如果您尝试,您将得到一个应用程序没有响应的错误,并且您的应用程序将崩溃 如果它是允许的,比如在旧的黑莓操作系统中,那么你可以在执行长时间任务时阻止用户界面,应用程序就会被冻结。不仅
如果允许在广播接收器中长时间运行任务,会发生什么情况?在Android中,GUI事件、服务和接收器在所谓的主线程中运行。这个线程非常重要,您将无法在那里运行长任务(超过几秒钟)。如果您尝试,您将得到一个应用程序没有响应的错误,并且您的应用程序将崩溃 如果它是允许的,比如在旧的黑莓操作系统中,那么你可以在执行长时间任务时阻止用户界面,应用程序就会被冻结。不仅GUI事件会受到影响,所有其他组件(其他服务和接收器)都会阻塞,直到您完成为止
这就是为什么您应该在后台线程中运行长任务。API已经为这种情况内置了类:AsyncTasks、IntentService和Loader。还有一些库可以简化bg处理,类似截击。广播接收器用于收听系统范围内的广播,不用于长时间运行的操作。如果您运行它,则ANR可能occur@kalyanpvs如果我们把我们的代码放在worker中,那么我认为这不是一个很好的方法,它会被杀死。他们明确地说它不可用。检查生命周期中的documnet