您好,我的 Android 应用程序有问题。将数据输入数据库时,读取数据的数据库查询不起作用,它会卡住 UI 并显示以下 Logcat 消息。
12-24 12:01:56.261: I/art(16943): Explicit concurrent mark sweep GC freed 33437(1578KB) AllocSpace objects, 0(0B) LOS objects, 39% free, 24MB/40MB, paused 724us total 84.428ms
12-24 12:01:57.050: I/art(16943): Explicit concurrent mark sweep GC freed 13651(640KB) AllocSpace objects, 0(0B) LOS objects, 39% free, 24MB/40MB, paused 929us total 94.389ms
12-24 12:01:57.708: I/art(16943): Explicit concurrent mark sweep GC freed 13625(637KB) AllocSpace objects, 0(0B) LOS objects, 39% free, 24MB/40MB, paused 3.232ms total 77.678ms
12-24 12:01:58.472: I/art(16943): Explicit concurrent mark sweep GC freed 13652(638KB) AllocSpace objects, 0(0B) LOS objects, 39% free, 24MB/40MB, paused 960us total 83.427ms
12-24 12:01:59.221: I/art(16943): Explicit concurrent mark sweep GC freed 13884(648KB) AllocSpace objects, 0(0B) LOS objects, 39% free, 24MB/40MB, paused 817us total 77.259ms
12-24 12:01:59.949: I/art(16943): Explicit concurrent mark sweep GC freed 13929(652KB) AllocSpace objects, 0(0B) LOS objects, 38% free, 25MB/41MB, paused 1.483ms total 67.075ms
12-24 12:02:00.657: I/art(16943): Explicit concurrent mark sweep GC freed 13901(649KB) AllocSpace objects, 0(0B) LOS objects, 38% free, 25MB/41MB, paused 1.158ms total 87.732ms
我不明白为什么会这样。任何帮助,将不胜感激。 谢谢!!
最佳答案
您肯定是在主线程(UI 线程)上工作。 你必须在后台线程上完成这项工作,同时显示加载或永无止境的动画以向用户展示你正在做某事。
否则GC的这种消息是正常的,不是问题,任何正常的应用程序都可以抛出这种消息。
您在应用启动 10 秒后遇到 ANR 问题?如果是这样,则 100% 是问题所在,您正在处理 ui 线程。
希望这对您有所帮助。
关于android - 应用程序 UI 因 GC 消息而卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27632656/