【发布时间】:2018-07-26 08:35:09
【问题描述】:
我在使用 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:代码缓存收集后,code=42KB,data=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.146 毫秒
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.606ms
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.258ms
07-26 08:28:15.718 6211-6228/org.myorg.myapp I/zygote:后台并发复制 GC 释放 668826(11MB) AllocSpace 对象,47(1520KB) LOS 对象,15% 空闲,31MB/37MB , 暂停 1.041ms 共 149.078ms
07-26 08:28:15.933 6211-6228/org.myorg.myapp I/zygote:后台并发复制 GC 释放 781317(13MB) AllocSpace 对象,51(1836KB) LOS 对象,13% 空闲,37MB/43MB , 暂停 1.114ms 共 169.812ms
07-26 08:28:16.172 6211-6228/org.myorg.myapp I/zygote:后台并发复制 GC 释放 871622(14MB) AllocSpace 对象,52(2044KB) LOS 对象,12% 空闲,43MB/49MB , 暂停 1.219ms 共 192.129ms
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.343ms
07-26 08:28:16.799 6211-6228/org.myorg.myapp I/zygote:后台并发复制 GC 释放 1046427(17MB) AllocSpace 对象,52(2MB) LOS 对象,9% 空闲,58MB/64MB , 暂停 1.088ms 共 290.110ms
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.931ms
07-26 08:28:17.512 6211-6228/org.myorg.myapp I/zygote:后台并发复制 GC 释放 1305931(22MB) AllocSpace 对象,58(2MB) LOS 对象,7% 空闲,76MB/82MB , 暂停 2.252ms 共 347.833ms
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.329ms
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.255ms
07-26 08:28:18.993 6211-6228/org.myorg.myapp I/zygote:后台并发复制 GC 释放 1706872(28MB) AllocSpace 对象,61(3MB) LOS 对象,5% 空闲,106MB/112MB , 暂停 1.647ms 共 494.095ms
07-26 08:28:19.564 6211-6228/org.myorg.myapp I/zygote:后台并发复制 GC 释放 1917145(31MB) AllocSpace 对象,64(4MB) LOS 对象,4% 空闲,124MB/130MB , 暂停 1.588ms 共 525.774ms
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.107ms
07-26 08:28:20.215 6211-6224/org.myorg.myapp I/zygote:WaitForGcToComplete 因调试器原因阻塞了 345.610 毫秒
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.115ms
07-26 08:28:21.698 6211-6228/org.myorg.myapp I/zygote:后台并发复制 GC 释放 1960643(32MB) 个 AllocSpace 对象,55(4MB) 个 LOS 对象,3% 空闲,170MB/176MB , 暂停 2.113ms 共 729.245ms
07-26 08:28:22.563 6211-6228/org.myorg.myapp I/zygote:后台并发复制 GC 释放 3069424(50MB) AllocSpace 对象,82(6MB) LOS 对象,3% 空闲,191MB/197MB , 暂停 2.610ms 共 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.265ms 共 941.755ms
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.390ms
07-26 08:28:24.869 6211-6224/org.myorg.myapp I/zygote:等待阻塞的 GC 调试器
【问题讨论】:
-
你能告诉我们什么是用户对象和getKeyname()返回值
-
@masoudvali 实际上,当我复制代码时,我才发现了这个错误(它是通过将上下文对象存储为类的一部分(我必须使它成为瞬态的)。但是,我仍然不知道为什么 Android Studio 挂起,这就是问题的真正意义
标签: android android-studio freeze