Android:调用 getExternalFilesDir(null) 时出现 ANR

7

最近,当我从我的活动代码调用getExternalFilesDir(null)时,我开始收到ANR错误。这段代码以前是可以正常工作的,但现在(可能在更新Gradle构建工具后),存在这样的问题。清理项目和重建都没有帮助。有人也遇到过这个问题吗?提前感谢。

代码示例。应用程序在第一行File folder = getExternalFilesDir(null);处冻结并出现ANR对话框。

    // check if downloaded files take less memory than EPISODES_SIZE_WARNING_LIMIT_MB
private void checkFolderSize() {
    File folder = getExternalFilesDir(null);
    if (folder != null) {
        long length = 0;
        for (File file : folder.listFiles())
            if (file.isFile())
                length += file.length();
        double sizeMb = ((double)length) / 1024 / 1024;
        if (sizeMb > EPISODES_SIZE_WARNING_LIMIT_MB) {
            new AlertDialog.Builder(this)
                    .setTitle(R.string.dialog_warning)
                    .setMessage(getString(R.string.warning_used_memory, EPISODES_SIZE_WARNING_LIMIT_MB))
                    .setNeutralButton(R.string.dialog_ok, null)
                    .show();
        }
    }
}

不要在主线程上做这件事... - Selvin
1
@Selvin:这个方法应该在主线程中工作。 - Victor Semenovich
1个回答

2

那是设备问题。重启后它就可以正常工作了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接