java - 带系统 : A resource failed to call release

标签 java android-studio resources

在我的应用程序上使用 AndroidStudio 的控制台时,它显示:

W/System:资源无法调用释放。

有时会说很多遍。我知道这意味着什么,但我已经多次检查了将近 2k 行代码,但我不知道我缺少什么来关闭/发布。

有什么方法可以从控制台扩展此信息?或者您将如何确定资源是什么或何时无法关闭?欢迎任何想法。谢谢。

最佳答案

@guest 的答案有效,但您无需使用 Strict Mode 进行反射即可实现完全相同的效果.具体来说,像这样:

StrictMode.setVmPolicy(new VmPolicy.Builder()
                 .detectLeakedClosableObjects()
                 .penaltyLog()
                 .build());

一般来说,严格模式可以为您做更多事情(参见上面的文档链接),对于默认设置,您需要做的就是:

StrictMode.enableDefaults();  # <-- This includes warning on leaked closeables

要“尽快”启用严格模式,您可以将上述任一代码选项添加到应用程序类的构造函数中,例如:

public class MyApp extends Application {

    public MyApp() {
        if(BuildConfig.DEBUG)
            StrictMode.enableDefaults();
    }

}

请注意,除了只创建上面的类之外,您还需要告诉 Android 您已经在 AndroidManifest.xml 中创建了一个自定义应用程序类。 (以便在您的应用程序进程启动时创建它的实例,而不是 Android 创建默认的 Application 类)。您需要添加/修改 android:name <application> 的属性标记指向自定义应用程序类的完全解析包路径(在本例中为 MyApp):

<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">

关于java - 带系统 : A resource failed to call release,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60253484/

相关文章:

java - 导入org.apache无法解析:Eclipse

Android - 前缀 "xmlns"不能显式绑定(bind)到任何命名空间; "xmlns"的命名空间也不能显式绑定(bind)到任何前缀

android - 错误 :Execution failed for task ':app:processDebugAndroidTestManifest'

wordpress - 如何修复WordPress中的 "508 Resource Limit is reached"错误?

wpf - 单元测试 - 在测试项目中使用图像作为资源

java - 在 Java 中将对象转换为 Double

java - Tomcat JDBCRealm 身份验证在部署后不起作用

c++ - 右键单击不可见 DLL 中的版本资源

java - Eclipse 在 Maven 项目中按字母顺序对文件夹进行排序

android - 如何在 Android Studio 的单元测试中使用 Mockito/Hamcrest