<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:name="com.example.app.MyApp" <-- IMPORTANT PART: ADAPT FOR YOUR ACTUAL PROJECT
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
5条答案
按热度按时间czq61nw11#
来自@guest的答案是有效的,但是您可以使用Strict Mode在不诉诸反射的情况下实现完全相同的结果。
一般来说,严格模式可以为您做更多的事情(见上面的链接),所有您需要做的默认设置是:
要“尽快”启用严格模式,您可以将上述任一代码选项添加到应用程序类的构造函数中,例如:
请注意,除了创建上述类之外,您还需要告诉Android您已在
AndroidManifest.xml
中创建了一个自定义应用程序类(以便在应用程序进程启动时创建它的示例,而不是Android创建默认的Application
类)。您需要添加/修改<application>
标记的android:name
属性,使其指向自定义应用程序类的完全解析包路径(本例中为MyApp
):j91ykkif2#
这个消息来自
dalvik.system.CloseGuard
,在调试的时候,你可以设置它在你创建资源的时候创建堆栈跟踪,这样你就可以跟踪哪些对象没有被关闭。它不是框架API的一部分,所以我使用反射来打开它:
更多信息:https://wh0.github.io/2020/08/12/closeguard.html
um6iljoc3#
我不认为你能从Logcat得到更多的信息。
Android Profiler的内存视图可能是一个很好的起点。在使用应用时查看它可以给予你了解哪些操作会导致内存被分配而不是释放。你也可以从时间线中选择部分,并按类深入到特定的分配。
另外,LeakCanary是一个很好的检测内存泄漏的库。
5lhxktic4#
迟回答,但可能对别人有用:
我遇到了同样的错误,但我忘记了我的VPN在后台运行。断开VPN对我来说是一个陷阱。也就是说,这可能是由于与您的应用程序或IDE无关的资源,您可能需要检查,如杀毒软件,VPN等。
qpgpyjmq5#
通过删除通过另一个函数调用自身从而导致对自身调用无限循环的函数调用,修复了此问题