Android 内存不足

Android OutOfMemory

我的问题是什么 (KISS)? 在详细显示第三张图片后,我的应用程序崩溃导致 OutOfMemory

关于我的应用程序的背景信息: 我做了一个线下超市。所有产品都显示在一个 ListView 中。 我使用的所有图像都通过 SugarORM 在 sqlite 数据库中存储为字符串(每个图像的 Uri)。 ListView 元素有一个 ArrayAdapter,其中设置了 ListView 中每个项目的信息。 像这样:

 ImageView imageView = (ImageView) rowView.findViewById(R.id.productimage);
 Handler handler = new Handler();
 handler.post(new Runnable() {
     @Override
     public void run() {
       imageView.setImageURI(productList.get(position).getPictureUri());
       handler.removeCallbacks(this);
     }
 });

我的意图是,在背景中加载图像以单击它,甚至在加载图像之前(但它对我不起作用:/图像已显示,但我无法单击任何其他图像加载图像时查看元素)。 "getPictureUri" 从管理员为产品选择的图片获取 URI,代码如下:

Intent pickPhoto = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(pickPhoto,1);

AndroidManifest.xml

android:hardwareAccelerated="false"
android:largeHeap="true"

我只从“AppCompatActivity”扩展(工具栏需要)。这个的意思:我一次都不用“Activity”。

任何人都可以给我一个好的建议,如何清除缓存的图像(我认为这可能是问题所在),此外,也许你们中的一个有时间帮助我解决我的 "Image Async Loading while you are able to move freely in your app" 问题。

使用 setImageUri() 会占用大量内存,尤其是在尝试从本地资源加载大型位图时。相反,对 any/all 图像加载任务使用 Picasso or Glide 等久经考验的解决方案。这些库将脱机工作,绝对可以从指向本地资源的 URI 加载图像,并且很可能会解决图像加载的所有内存问题。