在Android Studio中导致java.lang.OutOfMemoryError的某些图像?

时间:2016-01-10 00:44:04

标签: java android xml

我将2个2MB .jpg图像压缩到每个300kb左右,以匹配我使用相同代码的工作图像。但是,每当我尝试在我的应用程序中使用2个压缩图像时,只要我在设备(我的手机)上运行它就会崩溃,我在错误日志中得到这个:

  

FATAL EXCEPTION:主程序:apps.appname,PID:17528

     

java.lang.OutOfMemoryError

我已经将它缩小到仅仅是那些我从2 MB压缩到300kb的2张图像的错误。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

  

发现它,相当大。 2432 x 4320

"相当大"有点轻描淡写。因此,如果您尝试将它们全部装入,那么每个消耗大约40MB。你不太可能有堆空间。

此外,您不太可能需要大图像,因为我不知道任何具有大屏幕分辨率的Android设备。您可能希望获得该分辨率图像的唯一情况是,如果您将它们作为文件下载后,它们的目标是为它们设置某种缩放缩放UI,在这种情况下this library可以提供帮助。

否则,请将图像重新取样至较低分辨率。如果这些是资源,请务必将它们放在scurl <- "scholar.google.com/citations?user=xqefLxQAAAAJ&hl=en" citid <- regmatches(scurl, gregexpr('(?<=user=)[[:alnum:]]+', scurl, perl=TRUE)) pub <- get_publications(citid, flush=TRUE) ## tolower does character conversion, and remove the trailing "..." coauthors <- sub('[ ,.]+$', '', tolower(pub$author)) coauthors <- coauthors[nzchar(coauthors)] # only keep entries that aren't blank ## Add self-loops for single-author entries adjlist <- strsplit(coauthors, '\\s*,\\s*') lens <- lengths(adjlist) adjlist[lens==1L] <- lapply(adjlist[lens==1L], rep, times=2) # repeat single author entries 中,以便Android不会尝试重新重新采样以应用密度转换。