当前位置: 代码迷 >> Android >> 哪位高手见过这个异常,什么原因导致的,怎么解决
  详细解决方案

哪位高手见过这个异常,什么原因导致的,怎么解决

热度:94   发布时间:2016-05-01 21:49:54.0
谁见过这个错误,什么原因导致的,如何解决?
01-18 08:43:49.796: ERROR/ActivityManager(60): ANR in com.vanceinfo
01-18 08:43:49.796: ERROR/ActivityManager(60): Reason: Executing service com.vanceinfo/.service.WidgetService
01-18 08:43:49.796: ERROR/ActivityManager(60): Load: 0.1 / 0.12 / 0.17
01-18 08:43:49.796: ERROR/ActivityManager(60): CPU usage from 187786ms to 70ms ago:
01-18 08:43:49.796: ERROR/ActivityManager(60): system_server: 2% = 1% user + 0% kernel / faults: 177 minor
01-18 08:43:49.796: ERROR/ActivityManager(60): m.android.phone: 0% = 0% user + 0% kernel / faults: 21 minor
01-18 08:43:49.796: ERROR/ActivityManager(60): adbd: 0% = 0% user + 0% kernel
01-18 08:43:49.796: ERROR/ActivityManager(60): logcat: 0% = 0% user + 0% kernel
01-18 08:43:49.796: ERROR/ActivityManager(60): qemud: 0% = 0% user + 0% kernel
01-18 08:43:49.796: ERROR/ActivityManager(60): zygote: 0% = 0% user + 0% kernel / faults: 34 minor
01-18 08:43:49.796: ERROR/ActivityManager(60): ndroid.launcher: 0% = 0% user + 0% kernel / faults: 9 minor
01-18 08:43:49.796: ERROR/ActivityManager(60): m.android.email: 0% = 0% user + 0% kernel / faults: 8 minor
01-18 08:43:49.796: ERROR/ActivityManager(60): events/0: 0% = 0% user + 0% kernel
01-18 08:43:49.796: ERROR/ActivityManager(60): rild: 0% = 0% user + 0% kernel
01-18 08:43:49.796: ERROR/ActivityManager(60): d.process.acore: 0% = 0% user + 0% kernel / faults: 9 minor
01-18 08:43:49.796: ERROR/ActivityManager(60): re-initialized>: 0% = 0% user + 0% kernel / faults: 7 minor
01-18 08:43:49.796: ERROR/ActivityManager(60): d.process.media: 0% = 0% user + 0% kernel / faults: 9 minor
01-18 08:43:49.796: ERROR/ActivityManager(60): com.svox.pico: 0% = 0% user + 0% kernel / faults: 7 minor
01-18 08:43:49.796: ERROR/ActivityManager(60): pdflush: 0% = 0% user + 0% kernel
01-18 08:43:49.796: ERROR/ActivityManager(60): servicemanager: 0% = 0% user + 0% kernel / faults: 10 minor
01-18 08:43:49.796: ERROR/ActivityManager(60): utmethod.pinyin: 0% = 0% user + 0% kernel / faults: 7 minor
01-18 08:43:49.796: ERROR/ActivityManager(60): id.defcontainer: 0% = 0% user + 0% kernel / faults: 8 minor
01-18 08:43:49.796: ERROR/ActivityManager(60): com.android.mms: 0% = 0% user + 0% kernel / faults: 8 minor
01-18 08:43:49.796: ERROR/ActivityManager(60): ndroid.settings: 0% = 0% user + 0% kernel / faults: 7 minor
01-18 08:43:49.796: ERROR/ActivityManager(60): +com.vanceinfo: 0% = 0% user + 0% kernel
01-18 08:43:49.796: ERROR/ActivityManager(60): +com.vanceinfo: 0% = 0% user + 0% kernel
01-18 08:43:49.796: ERROR/ActivityManager(60): TOTAL: 4% = 2% user + 1% kernel + 0% irq + 0% softirq


------解决方案--------------------
anr

------解决方案--------------------
UI阻塞超时了
------解决方案--------------------
我正在解决这样的ANR
------解决方案--------------------
Android SDK的说明很有误导性。

android的service,只是用于后台,一般不能用于运算量很大或者占用线程时间很长的处理。
service和activity一样,都是在主线程中调用的,他们的那些方法,都是被主线程的looper和handler根据事件和状态分散处理的,如果一个函数时间很长,都要出现ANR问题。

如果一个函数执行时间很长,需要起线程,或者起service,但这个service需要单独的进程中运行,不能和activity在一个进程中。

在一个进程中,占时间长的函数,最好能用异步线程(这要求运算模块很独立才行),用普通线程,同步不好也会有问题,同步问题最好是状态机+handler来处理吧。
  相关解决方案