首页 > 解决方案 > 当外部库中抛出异常时,Android Studio 挂起

问题描述

我在使用 Android Studio (3.1.3) 时遇到问题,当(我假设)从外部库中抛出异常时,应用程序将挂起。这使得调试变得不可能,因为我从来没有看到异常是什么。它不会打印到 Logcat 和调试控制台中,并且不会在 try catch 语句中捕获异常。

起初我以为是因为代码在另一个线程上运行,但它也发生在它在主线程上运行时。

我还尝试重新启动模拟器、android studio 和我的电脑,但它们都没有帮助。

并非所有异常都会发生(我通过尝试除以 0 进行测试)

如果有帮助,这是引发异常的代码:

Gson gson = new GsonBuilder().registerTypeAdapter(User.class, new InterfaceAdapter()).create();
SharedPreferences sharedPreferences = context.getSharedPreferences(getFileName(context), ContextWrapper.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
try {           
    String value = gson.toJson(user); //this is where the program hangs
    editor.putString(getKeyName(), value);
    editor.apply();
} catch (Exception ex) {
    ex.printStackTrace();
}

这基本上是问题开始后 logcat 的样子:

07-26 08:28:06.754 6211-6220/org.myorg.myapp I/zygote:做全码缓存收集,code=76KB,data=76KB

07-26 08:28:06.756 6211-6220/org.myorg.myapp I/zygote:代码缓存收集后,代码=42KB,数据=44KB

07-26 08:28:14.867 6211-6224/org.myorg.myapp I/zygote:等待阻塞的 GC 调试器

07-26 08:28:14.883 6211-6224/org.myorg.myapp I/zygote: WaitForGcToComplete 因原因被阻塞 16.146ms 调试器

07-26 08:28:15.201 6211-6228/org.myorg.myapp I/zygote:后台并发复制 GC 释放 409390(7MB) AllocSpace 对象,41(984KB) LOS 对象,24% 空闲,18MB/24MB,暂停 692us总计 101.606 毫秒

07-26 08:28:15.519 6211-6228/org.myorg.myapp I/zygote:后台并发复制 GC 释放 592391(10MB) AllocSpace 对象,48(1428KB) LOS 对象,18% 空闲,26MB/32MB,暂停 799us总计 124.258 毫秒

07-26 08:28:15.718 6211-6228/org.myorg.myapp I/zygote: 后台并发复制 GC 释放 668826(11MB) AllocSpace 对象, 47(1520KB) LOS 对象, 15% free, 31MB/37MB, paused 1.041毫秒总 149.078 毫秒

07-26 08:28:15.933 6211-6228/org.myorg.myapp I/zygote: 后台并发复制 GC 释放 781317(13MB) AllocSpace 对象, 51(1836KB) LOS 对象, 13% free, 37MB/43MB, paused 1.114毫秒总 169.812 毫秒

07-26 08:28:16.172 6211-6228/org.myorg.myapp I/zygote: 后台并发复制 GC 释放 871622(14MB) AllocSpace 对象, 52(2044KB) LOS 对象, 12% free, 43MB/49MB, paused 1.219毫秒总 192.129 毫秒

07-26 08:28:16.461 6211-6228/org.myorg.myapp I/zygote:后台并发复制 GC 释放 985287(16MB) AllocSpace 对象,55(2MB) LOS 对象,10% 空闲,49MB/55MB,暂停 962us总计 239.343 毫秒

07-26 08:28:16.799 6211-6228/org.myorg.myapp I/zygote: 后台并发复制 GC 释放 1046427(17MB) AllocSpace 对象, 52(2MB) LOS 对象, 9% free, 58MB/64MB, paused 1.088毫秒总 290.110 毫秒

07-26 08:28:17.121 6211-6228/org.myorg.myapp I/zygote:后台并发复制 GC 释放 1235281(20MB) AllocSpace 对象,58(2MB) LOS 对象,8% 空闲,65MB/71MB,暂停 924us总计 281.931 毫秒

07-26 08:28:17.512 6211-6228/org.myorg.myapp I/zygote:后台并发复制 GC 释放 1305931(22MB) AllocSpace 对象,58(2MB) LOS 对象,7% 空闲,76MB/82MB,暂停 2.252毫秒总计 347.833 毫秒

07-26 08:28:17.946 6211-6228/org.myorg.myapp I/zygote:后台并发复制GC释放1545721(25MB)AllocSpace对象,62(3MB)LOS对象,6%空闲,86MB/92MB,暂停670us总计 388.329 毫秒

07-26 08:28:18.446 6211-6228/org.myorg.myapp I/zygote:后台并发复制 GC 释放 1689093(28MB) AllocSpace 对象,64(3MB) LOS 对象,5% 空闲,94MB/100MB,暂停 811us总计 447.255 毫秒

07-26 08:28:18.993 6211-6228/org.myorg.myapp I/zygote: 后台并发复制 GC 释放 1706872(28MB) AllocSpace 对象, 61(3MB) LOS 对象, 5% free, 106MB/112MB, paused 1.647毫秒总计 494.095 毫秒

07-26 08:28:19.564 6211-6228/org.myorg.myapp I/zygote:后台并发复制 GC 释放 1917145(31MB) AllocSpace 对象,64(4MB) LOS 对象,4% 空闲,124MB/130MB,暂停 1.588毫秒总计 525.774 毫秒

07-26 08:28:19.869 6211-6224/org.myorg.myapp I/zygote:等待阻塞的 GC 调试器

07-26 08:28:20.215 6211-6228/org.myorg.myapp I/zygote:后台并发复制 GC 释放 2316750(38MB) AllocSpace 对象,73(5MB) LOS 对象,4% 空闲,138MB/144MB,暂停 675us总计 594.107 毫秒

07-26 08:28:20.215 6211-6224/org.myorg.myapp I/zygote:WaitForGcToComplete 因原因被阻塞 345.610ms 调试器

07-26 08:28:20.921 6211-6228/org.myorg.myapp I/zygote:后台并发复制 GC 释放 2507776(41MB) AllocSpace 对象,74(5MB) LOS 对象,4% 空闲,136MB/142MB,暂停 711us总计 657.115 毫秒

07-26 08:28:21.698 6211-6228/org.myorg.myapp I/zygote:后台并发复制 GC 释放 1960643(32MB) AllocSpace 对象,55(4MB) LOS 对象,3% 空闲,170MB/176MB,暂停 2.113毫秒总 729.245 毫秒

07-26 08:28:22.563 6211-6228/org.myorg.myapp I/zygote: 后台并发复制 GC 释放 3069424(50MB) AllocSpace 对象, 82(6MB) LOS 对象, 3% free, 191MB/197MB, paused 2.610毫秒总计 817.861ms

07-26 08:28:23.553 6211-6228/org.myorg.myapp I/zygote:后台并发复制 GC 释放 3358701(55MB) AllocSpace 对象,84(7MB) LOS 对象,3% 空闲,188MB/194MB,暂停 2.265毫秒总计 941.755 毫秒

07-26 08:28:24.550 6211-6228/org.myorg.myapp I/zygote:后台并发复制GC释放2638191(43MB)AllocSpace对象,63(5MB)LOS对象,2%空闲,227MB/233MB,暂停687us总计 939.390 毫秒

07-26 08:28:24.869 6211-6224/org.myorg.myapp I/zygote:等待阻塞的 GC 调试器

标签: androidandroid-studiofreeze

解决方案


转到您的 logcat,在右侧会有一个微调器,其中包含如何过滤日志的选项。选择编辑过滤器配置并输入您的包名称。这样,您将能够跟踪在您的情况下消失的日志。

在此处输入图像描述

干杯!


推荐阅读