Android中的繁重任務應該在後臺線程中執行。重任務是:還有什麼被認爲是Android的沉重任務?
- 數據庫任務
- 與圖片,音頻作品,視頻
- 抓取和分析互聯網數據
- 一些大量的計算(在大多數應用程序非常罕見)
什麼否則可以被認爲是一個繁重的任務,應該在後臺線程中執行?
我得到一個ANR錯誤,我需要知道Android將哪些任務解釋爲繁重的任務。
Android中的繁重任務應該在後臺線程中執行。重任務是:還有什麼被認爲是Android的沉重任務?
什麼否則可以被認爲是一個繁重的任務,應該在後臺線程中執行?
我得到一個ANR錯誤,我需要知道Android將哪些任務解釋爲繁重的任務。
還有什麼可以被視爲沉重的任務,應該在後臺線程中執行?
如果花費幾個毫秒以上,它應該在後臺線程中執行。
由Android 4.1的Project Butter提供,Android UI現在以60fps更新,這意味着有16ms的時間來完成渲染幀所需的所有工作。操作系統需要一些時間來做實際的渲染。如果你花費的時間超過幾毫秒,你可能會跳過一幀,導致「janky」行爲。即使在早期版本的Android上,也可以看到效果 - 這對Jelly Bean來說會更加震撼,因爲一切都更加平滑。
你如何建議我測量每個組件的執行時間?任何sdk工具? – sandalone 2012-07-25 06:53:17
@sandalone:您可以使用從簡單的'Log'語句到['TimingLogger'](http://developer.android.com/reference/android/util/TimingLogger.html)到[Traceview](http:// developer.android.com/tools/debugging/debugging-tracing.html) – CommonsWare 2012-07-25 10:44:38
系統不會拋出ANR,因爲它注意到你正在做一些它被歸類爲「重」的事情;它會產生ANR,因爲用戶界面沒有響應。使用調試語句(即Log.d()),您需要跟蹤應用程序的進度,並在出現錯誤時找出它正在執行的操作(或嘗試執行的操作)。例如,UI線程上的無限循環會產生一個ANR,但是(可能)沒有辦法將任意循環分類爲無限循環。
無論您的應用程序在獲取錯誤時所做的事情。 – 2012-07-24 20:42:06
@DavidSchwartz我不確定。用戶報告這一點。但主要目的是瞭解是否有其他任務被視爲重度任務。 – sandalone 2012-07-24 20:43:12
嘗試在LogCat的幫助下找到繁重的任務。 – 2012-07-24 20:43:13