我在连续点击屏幕时获得应用程序无响应(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
有谁可以帮我解决这个问题?
提前致谢。
答案 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)
如果您正在执行资源密集型任务,则可能会发生这种情况。在恢复活动的同时。