Android中的繁重任务应该在后台线程中执行。繁重的任务是:
还有什么可以被认为是一项繁重的任务,应该在后台线程中执行?
我收到ANR错误,我需要知道Android解释哪些任务是繁重的任务。
答案 0 :(得分:3)
系统不会抛出ANR,因为它注意到你正在做一些它被归类为“沉重”的东西;它产生ANR,因为用户界面没有响应。使用调试语句(即Log.d()),您需要跟踪应用程序的进度,并在出现错误时弄清楚它正在做什么(或尝试做什么)。例如,UI线程上的无限循环会产生ANR,但是(可证)无法将任意循环分类为无限循环。
答案 1 :(得分:2)
还有什么可以被认为是一项繁重的任务,应该在后台线程中执行?
如果花费的时间超过几毫秒,则应在后台线程中执行。
在Android 4.1中由Project Butter提供,Android UI现在以60fps更新,这意味着有大约16ms的时间来完成渲染帧所需的一切。操作系统需要一些时间来进行实际渲染。如果你花费超过几毫秒,你可能会跳过一个框架,导致“janky”行为。即使在早期版本的Android上,也可以看到效果 - 它会对Jelly Bean产生更大的影响,因为其他一切都比较顺畅。