Android 尝试通过 Picasso 获取图像时出现 Studio OutOfMemoryError

Android Studio OutOfMemoryError when trying to get image through Picasso

编辑:很明显,我尝试使用的图像太大了。无论如何我可以解决这个问题吗?我试图最终裁剪它们并以编程方式将它们设置为我的墙纸。我尝试了一个较小的图像并且它有效。有大图的提示吗?

所以我尝试使用 Picasso 从 url 获取图像,但是当我使用 .get() 方法时,我得到了这个:

java.lang.RuntimeException: An error occured while executing doInBackground()
    at android.os.AsyncTask.done(AsyncTask.java:300)
    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
    at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
    at java.util.concurrent.FutureTask.run(FutureTask.java:242)
    at android.os.AsyncTask$SerialExecutor.run(AsyncTask.java:231)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
    at java.lang.Thread.run(Thread.java:841)
Caused by: java.lang.OutOfMemoryError
    at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
    at android.graphics.BitmapFactory.decodeStreamInternal(BitmapFactory.java:601)
    at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:577)
    at com.squareup.picasso.BitmapHunter.decodeStream(BitmapHunter.java:142)
    at com.squareup.picasso.BitmapHunter.hunt(BitmapHunter.java:217)
    at com.squareup.picasso.RequestCreator.get(RequestCreator.java:385)

我在 AsyncTask 中执行 Picasso 代码,因为那是我有一些网络代码获取我需要的 url 的地方。但是,即使我注释掉所有内容并直接将 url 给 Picasso,问题仍然存在。注释掉所有内容后,我的代码如下所示:

protected Bitmap doInBackground(String... name) {
    try {
         return Picasso.with(myContext)
                .load("https://i.redd.it/4l2boppcmn1x.jpg")
                .get();

    } catch (Exception e) {
        android.util.Log.e(TAG, "Failed to retrieve submissions", e);
        return null;
    }
}

我已经尝试了所有我能想到的方法,包括增加堆大小、将 largeHeap 标记添加到清单等。这是我的代码或 Android Studio 的问题吗?在我的应用程序处于 运行 时使用内存监视器时,它会在我做任何事情之前显示 "Free[0.35 MB] Allocated[15.02 MB]"。那不可能吧?我对这一切还很陌生,所以如果我误解了什么,请告诉我。谢谢

使用 Picasso 调整大小

return Picasso.with(myContext)
                .load("https://i.redd.it/4l2boppcmn1x.jpg")
                .resize(500, 300)
                .get();