【问题标题】:Android app crashes due to large number of images由于大量图像,Android 应用程序崩溃
【发布时间】:2013-08-01 17:47:53
【问题描述】:

我正在编写一个需要大约 520 个小 png 的应用程序。我已将这些存储在我的资产文件夹中,并使用 getAssets() 访问它们。

但是,如果我减少文件夹中的图像数量,我的应用程序在启动时会崩溃并且可以正常工作。是否可以在其他地方存储额外的图像或增加我的应用可以处理的图像大小?

我的 logcat 错误是“添加到 JNI 本地引用表失败(有 512 个条目)”

每张图片大约 4kb 大,文件夹总大小为 2.1 Mb

相关代码为:

        AssetManager assets = getAssets();
    fileNameList = new ArrayList<String>();
    fileNameList.clear();

    String[] paths;
    try {
        paths = assets.list("final");

        for (String path : paths)
            fileNameList.add(path.replace(".jpg", ""));

    } catch (IOException e) {
        Log.e(TAG, "Error loading image file names", e);
    } // end catch

【问题讨论】:

  • png 有多小(即文件大小)?这也是因为 OutOfMemory 错误而崩溃吗?以及它们是如何显示的(例如 listview、imageview、gridview)?您可能需要通过使用较低分辨率的图像来减小文件大小才能完成这项工作。
  • @goran-horia-mihail:更新了我的帖子
  • @rarw: 更新了我的帖子
  • 您能否也将代码发布到您要检索图像的位置。你可能做错了什么。
  • @btse:该代码适用于少量图像。我在上面贴了一个sn-p

标签: android android-ui


【解决方案1】:

我想你的答案是in this post。您不能将引用表扩展到超过 512 个项目,因此您需要删除对类和/或对象的本地引用以释放空间。

【讨论】:

  • 我已经减少了编号。图像到 460。没有变化,而且,我不知道为什么会出现 JNI 错误,但我还没有在我的代码中使用 JNI
  • 那没有意义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-20
  • 2016-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-13
相关资源
最近更新 更多