android - 对输入事件响应缓慢的应用程序崩溃
问题描述
我有 2 块具有相同 imx6d CPU 和 2G 内存的板。它们上的操作系统都是 Android 5.1,但来自不同的供应商。我在它们上面安装了一个应用程序,其中一个运行良好,而另一个在我单击窗口时总是崩溃。Logcat 显示 ANR 错误导致了问题。
E/ActivityManager( 2803): ANR in com.mm.android.direct.gdmsspadLite (com.mm.android.direct.gdmsspadLite/com.mm.android.direct.gdmsspad.MainActivity)
E/ActivityManager( 2803): 51% 5968/com.mm.android.direct.gdmsspadLite: 39% user + 11% kernel / faults: 3483 minor
E/ActivityManager( 2803): 103% 5968/com.mm.android.direct.gdmsspadLite: 50% user + 53% kernel / faults: 746 minor
E/ActivityManager( 2803): 98% 5968/ct.gdmsspadLite: 48% user + 50% kernel
E/ActivityManager( 2803): 1.9% 6379/ct.gdmsspadLite: 0% user + 1.9% kernel
W/ActivityManager( 2803): Force finishing activity com.mm.android.direct.gdmsspadLite/com.mm.android.direct.gdmsspad.MainActivity
I/ActivityManager( 2803): Killing 5968:com.mm.android.direct.gdmsspadLite/u0a38 (adj 0): user request after error
我发现问题板显示如下警告:
D/dalvikvm( 5721): No JNI_OnLoad found in /data/app-lib/com.mm.android.direct.gdmsspadLite-1/libdvr.so ,skipping init
失败的 JNI-OnLoad 是否会导致响应缓慢并最终导致崩溃?
解决方案
似乎默认的 dalvik.heapsize 和 dalvik.heapgrowthlimit 对于我的应用程序来说太少了。我放大了这些,并且不太可能发生错误。然而,经过2分钟的高频测试,它终于崩溃了。然后我扩大了ANR的响应时间,它经受住了3个多小时的测试。
推荐阅读
- linux - 如何修复 /run/screen/S-Ubuntu 中的 1 个 Socket,无法连接到任何屏幕
- java - HBase 和 Solr 独立示例图实例化错误
- c# - 检索 XML 树值的特定部分
- android - Dagger2 + Kotlin:lateinit 属性 appComponent 尚未初始化
- node.js - TypeOrm 不同步 JoinTable
- sql - 一列sql中的多个值
- unit-testing - 如何用 puppeteer 模拟设备宽度?
- json - 如何使用 JSON 文件中的 Angular 7 中的插值来提供 SVG 图标?
- android - 从异步调用填充的 Flutter 列表会引发应用内错误,但不会崩溃
- ssl-certificate - macOS Mojave 升级后 Marklogic WebDav 服务器连接不工作