![]() |
1
48
在onClick实现中必须尽可能快。一般来说,昂贵的操作应该卸载到后台线程。
而不仅仅是
|
![]() |
2
5
AsyncTask 在这些情况下非常有用。 在您的情况下,您可以执行以下操作:
|
![]() |
3
2
在单独的线程中执行长操作,或者使用AsyncTask来摆脱ANR。
安
ANR(活动无响应)
当一些
http://developer.android.com/guide/practices/design/responsiveness.html 基本上,如果让UI线程执行一些复杂的任务,那么它就太忙了,无法告诉OS它仍然是“活动的”。 http://android-developers.blogspot.co.uk/2009/05/painless-threading.html 您应该将XML解析代码移动到另一个线程,然后使用回调来告诉UI线程您已经完成并对结果进行处理。 http://developer.android.com/resources/articles/timed-ui-updates.html 如果是一个永久性的块(比如获取一些锁的死锁),检测ANRs发生的位置很容易,但是如果只是一个临时的延迟,检测ANRs发生的位置就更难了。首先,检查您的代码并查找易受攻击的点和长时间运行的操作。示例可能包括在事件线程内使用套接字、锁、线程休眠和其他阻塞操作。你应该确保这些都发生在不同的线程中。如果没有问题,请使用DDMS并启用线程视图。这将显示应用程序中与跟踪类似的所有线程。复制ANR,同时刷新主线程。这应该能准确地告诉你在ANR的时候发生了什么 如果Logcat没有输出任何有用的内容,请尝试从/data/anr/traces.txt中提取traces.txt
因为它可能会提供更多有关ANR异常发生位置的信息 以及 this link 也可能有助于创建异步任务和线程 |
![]() |
4
1
如果你正在做一个资源密集型的任务,那么它可能会发生。在恢复活动的同时。 2如果在活动中显示地图,则在睡眠时停止刷新覆盖图。然后在恢复时重新启动。 |
![]() |
user3303504 · Qt调试器使用OpenCV冻结 7 年前 |
![]() |
StepHan · 当我尝试递增并打印循环中的数字时,程序停止响应 7 年前 |
|
Brille · Windows窗体在计时器计时时冻结 8 年前 |
|
Michael Wang · 升华文本3包控制安装时冻结 9 年前 |