Android ANR keyDispatchingTimedOut在屏幕上连续点击时出错

时间:2010-12-25 08:42:29

标签: android

我在连续点击屏幕时获得应用程序无响应(ANR)对话框。 屏幕上没有我正在点击的视图。这个问题的频率较低,但我仍然无法完全删除它。

这里我附加了在此错误中捕获的日志。

ERROR/ActivityManager(1322): ANR in com.test.mj.and.ui     (com.test.mj.and.ui/.TermsAndCondActivity)
ERROR/ActivityManager(1322): Reason: keyDispatchingTimedOut
ERROR/ActivityManager(1322): Parent: com.test.mj.and.ui/.SplashActivity
ERROR/ActivityManager(1322): Load: 6.59 / 6.37 / 5.21
ERROR/ActivityManager(1322): CPU usage from 11430ms to 2196ms ago:
ERROR/ActivityManager(1322):   rtal.mj.and.ui: 9% = 7% user + 1% kernel / faults: 649  minor
ERROR/ActivityManager(1322):   system_server: 4% = 2% user + 2% kernel / faults: 10 minor
ERROR/ActivityManager(1322):   logcat: 3% = 1% user + 1% kernel / faults: 675 minor 1  major
ERROR/ActivityManager(1322):   synaptics_wq: 1% = 0% user + 1% kernel
ERROR/ActivityManager(1322):   ami304d: 1% = 0% user + 0% kernel
ERROR/ActivityManager(1322):   .process.lghome: 1% = 0% user + 0% kernel / faults: 47 minor
ERROR/ActivityManager(1322):   sync_supers: 0% = 0% user + 0% kernel
ERROR/ActivityManager(1322):   droid.DunServer: 0% = 0% user + 0% kernel / faults: 6 minor
ERROR/ActivityManager(1322):   events/0: 0% = 0% user + 0% kernel
ERROR/ActivityManager(1322):   oid.inputmethod: 0% = 0% user + 0% kernel / faults: 2 minor
ERROR/ActivityManager(1322):   m.android.phone: 0% = 0% user + 0% kernel / faults: 2 minor
ERROR/ActivityManager(1322):   ndroid.settings: 0% = 0% user + 0% kernel
ERROR/ActivityManager(1322):   sh: 0% = 0% user + 0% kernel / faults: 110 minor
ERROR/ActivityManager(1322):  -flush-179:0: 0% = 0% user + 0% kernel
ERROR/ActivityManager(1322): TOTAL: 19% = 13% user + 6% kernel
WARN/WindowManager(1322): Continuing to wait for key to be dispatched
WARN/WindowManager(1322): No window to dispatch pointer action 1

有谁可以帮我解决这个问题?

提前致谢。

4 个答案:

答案 0 :(得分:3)

通常在onClick处理程序中执行一些耗时的活动,例如从网络获取资源或计算复杂的东西。使用单独的线程(UI线程),以便onclick处理程序可以返回,窗口管理器将继续。

http://developer.android.com/resources/articles/painless-threading.html

您可以在视图

上使用Asynctask或postDelayed

答案 1 :(得分:1)

如前this answer中所述:如果点击,触摸,按键等事件阻止了UI线程,就会发生这种情况。

有趣的是,同样的事情发生在我身上,而且(非常)很少见。我的问题是基于浮点值的二元搜索(不是非常愚蠢的;-)。有时搜索标准不再改变,所以我得到了一个无限循环。

我的建议:如果您从未打算做过可能会阻止UI线程的繁重工作,请尝试在代码中搜索可能的无限循环。

答案 2 :(得分:0)

从一个活动传递到另一个活动有100kb数据的限制。如果它达到限制,则会出现所述错误。

这是http://demetrimiller.com/2010/11/09/android-binder-transaction-failed-error-message/

当我通过一个巨大的arraylist时,我得到了同样的错误。这个arraylist,我是,从服务器获取它。所以试试吧。可能它解决了你的问题。

答案 3 :(得分:0)

如果您正在执行资源密集型任务,则可能会发生这种情况。在恢复活动的同时。

  • 尝试停止onPause上的所有密集工作,然后重新启动 它在onResume上。如果要在活动图形叠加上显示地图 然后在睡眠和刷新时停止刷新覆盖层 它在onResume上。使用线程执行密集型任务。