问题标签 [android-anr-dialog]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 当我的代码未出现在堆栈上时,如何解释 ANR traces.txt?
我正在尝试在我的 Android 应用程序中调试持久性 ANR(“应用程序无响应”)。
我已经阅读了这些主题:
最重要的消息是使用StrictMode,我会这样做。
但是,我仍然想解释我反复看到的 ANR 堆栈的原因。首先,我没有看到任何主线程——相反,我在主“组”中看到了许多线程,包括一个名为“waitForActivityStart”的线程。
在任何线程上我都看不到我的代码,所以我很困惑由于我自己的代码而导致此 ANR 是如何发生的。我从安装的库中看到的唯一代码是 Google Analytics (GA),您可以看到它的标题为“GAThread”。这可能是罪魁祸首吗?如果是这样,有人可以解释我如何从这份报告中推断出这一点吗?
这是我在运行 4.2.2 的 Nexus 7 上使用 ADB 提取的 traces.txt 的输出
android - 当我制作很多按钮时,Android 错误 ANR
我不明白这个问题。我的 android 应用程序需要生成自定义按钮。如果我有少于 144 个按钮但如果我生成超过 144 个按钮的按钮,它可以工作。它不能工作(强制关闭)并在这样的日志转换中显示错误.....
我敢肯定,这不是我的代码中的错误。怎么了?
android - ANR 超时时间过长
我想我在这里有点愚蠢,但我不明白为什么我会得到错误的 ANR 超时值。示例一:
我运行此代码并在另一个视图上触发触摸事件。我将在 10 秒后获得 ANR,而我预计是 5 秒。
示例二:
同样,我运行代码并触发触摸事件。这次我根本不会得到 ANR。
关于发生了什么的任何想法?
android - 带有大型数据库的android游标加载器
我正在开发一个联系人应用程序,我需要支持大量联系人。假设用户有 10 万个联系人。
要求是 1) 具有快速滚动功能的分段列表视图 2) 使用名字或姓氏、电子邮件或电话号码搜索联系人作为用户类型
我写了一个内容提供者,我有一个有 5 列的表。
我正在使用 loadermanger 回调和来自支持库的游标加载器来查询内容提供者。
但我在表中有 50000 行时遇到了这个问题。
1)ANR - 使用此日志可能是因为游标不断分配和释放堆内存
2)从适配器中删除部分代码似乎会降低 ANR 频率,但 FASTSCROLL 仍然会导致 ANR。
3)搜索:它非常慢,我可以使用“FTS3”加快搜索速度,但这不是我的要求。我只需要在查询中使用“LIKE”或“CONTAINS”。
这不可能达到这个要求吗?谷歌的家伙是怎么做到的?
android - 应用程序随机使用中的 ANR
我有一个 VOIP 应用程序,引擎部分是 C(NDK) 级别。在随机使用应用程序时,我以指向“在 android.os.MessageQueue.nativePollOnce(Native Method)”的 ANR 结束。
使用android-ndk-r5
ANR 跟踪:
编辑于 2013 年 5 月 6 日亚行日志
不确定此时哪个线程卡住了。这里发生了什么?
java - Android setOnKeyListener 导致 ANR (Application Not Responding) 提示
我制作了一个简单的应用程序,它遍历一个大 (1.5MB) 文本文件的所有行,并显示包含特定单词的每一行(该单词是通过 EditText 从用户接收的)。该应用程序在搜索文本文件时肯定会让我的设备承受很大的压力,但在添加下面的代码之前,我从未收到过任何 ANR 提示。现在我经常收到 ANR 提示。从应用程序中删除代码可以消除 ANR 提示。这段代码可能导致提示的原因是什么?是不是写错了?除了导致 ANR 提示之外,它工作正常。
编辑:
ANR 提示似乎是 OnKeyListener 进程无法在通过 Enter 键触发后几秒钟内完成的结果。它无法完成,因为它启动了一个耗时的资源占用过程,延迟了它的完成。解决方案是让 OnKeyListener 进程更改变量的值,而不是启动资源占用进程。这允许 OnKeyListener 进程立即完成,然后从其他地方启动资源占用进程(由变量值的更改触发)。
下面是我现在使用的代码。稍后,我将尝试制作第二个应用程序,将资源占用过程置于后台,如下面的 Simon André Forsberg 推荐的那样。
java - Android - 如何将五个变量值传递给后台线程并从中接收五个值?
简短的故事:
我需要将一些代码从我的 UI 线程中移出到后台线程中,并且我需要能够将五个变量值传递到该后台线程并从中接收五个值。我希望有人可以提供一个简单的工作示例,假设下面的代码是我的代码,而注释行之间的位是需要移动的。
更长的故事:
我的 UI 线程中的部分代码需要大约 15 秒才能完成。在此期间屏幕冻结。我不介意屏幕冻结,因为用户此时不需要与屏幕交互。问题是我也有一个OnKeyListener在我的 UI 线程中,它不赞成延迟。如果用户在 15 秒延迟期间按下任何键盘键,将导致大约 5 秒后出现 ANR(应用程序无响应)提示。我需要将耗时的代码移到可以在后台运行的单独线程中。我花了大约 13 个小时试图弄清楚如何使用 AsyncTask 和其他方法来做到这一点,但无法弄清楚如何将五个变量值传递到线程中并从中接收五个值。我希望有人可以提供一个简单的工作示例,假设下面的代码是我的代码,而注释行之间的位是需要移动的。
编辑:
这是我最终为解决这个问题所做的事情:
android - 好奇 Google Play 如何捕获和报告 ANR?
触发 ANR(应用程序无响应)时,系统是否向应用程序发送任何 API 或低级别信号?
android - 在 FragmentDialogDismiss 之后尝试加载 Activity 时出现 ANR
我有一个发送 BC 并使用 AlarmManager 等待 5 秒响应的活动。一旦我收到广播,我: 1. 使用 mDialog.dismiss() 删除 FragmentDialog;2. 使用 getActivity().startActivity(myIntent) 开始一个新的活动;
我在一个片段中(使用支持库中的 TabFragment 和我创建的 MyTabActivity)。问题是我经常出现黑屏和 ANR,如果我删除 startActivity() 行,我没有收到 ANR,片段确实被关闭,但我的活动没有显示,我得到黑屏,如果我按下它,ANR。我想到的是片段管理器开始处理活动,然后我开始了一个新的搞砸 android,因为我以片段为基础,我真的不知道如何摆脱这个烂摊子,想在活动中使用处理程序以 300 毫秒开始发布我的活动,这是一个非常非常丑陋的解决方案。有什么好主意吗?
android - 在线程转储中看到什么
我在 Google Play Market 中发布了一些应用程序,并且keyDispatchingTimedOut
在我的 MainActivity 中不断收到 ANR(应用程序无响应)报告。如您所知,Google 为我提供Thread Dumps
了它。我不知道如何分析它,我应该仔细看看哪个部分。
我在eclipse中使用虚拟设备测试了所有android版本的应用程序,一切正常。
这是我的线程转储中的几行,完整的列表真的很长。
任何帮助表示赞赏。