所以我试图使用Picasso从网址获取图片,但是当我使用.get()方法时,我得到了这个:
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.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$1.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。但是,即使我将所有内容都注释掉并直接将其提供给毕加索,问题仍然存在。随着一切被注释掉,我的代码看起来像这样:
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;
}
}
我已经尝试了我能想到的一切,包括增加堆大小,将manifestHeap标记添加到清单等等。这是我的代码还是Android Studio的问题?在我的应用程序运行时使用内存监视器时,它说" Free [0.35 MB]分配[15.02 MB]"在我做任何事之前。那可能是对的吗?我对这一切还不熟悉所以如果我误解了什么,请告诉我。感谢。
答案 0 :(得分:0)
使用Picasso调整大小
return Picasso.with(myContext)
.load("https://i.redd.it/4l2boppcmn1x.jpg")
.resize(500, 300)
.get();