我对Android开发很新,遇到了内存问题。在移动方面,我倾向于创建iOS应用程序。我有一个带有列表视图的MainActivity,如下图所示:
我有9个会话,当我有相同的图像时它会平滑滚动但是当我使用9个不同的图像时它会打得很响,当我走到列表的底部时,我得到了这个OutOfMemoryError错误:
java.lang.OutOfMemoryError
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:587)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:422)
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:840)
at android.content.res.Resources.loadDrawable(Resources.java:2110)
at android.content.res.Resources.getDrawable(Resources.java:700)
at ly.mann.kevinmann.transformingwork.CellAdapter.getView(CellAdapter.java:57)
我已经在这里阅读了类似的一些答案,但我对下一步该做什么感到有点迷茫。
我在适配器中用来显示图像的代码是:
ObjSession cellData = mSessions.get(position);
if(cellData != null){
// Get real header image with fall back
String uri = "@drawable/" + cellData.mPreview ;
Drawable res;
int imageResource = mContext.getResources().getIdentifier(uri, null, mContext.getPackageName());
try{
res = mContext.getResources().getDrawable(imageResource);
}
catch(Resources.NotFoundException e) {
imageResource = mContext.getResources().getIdentifier("@drawable/following", null, mContext.getPackageName());
res = mContext.getResources().getDrawable(imageResource);
}
holder.previewImageView.setImageDrawable(res);
holder.titleLabel.setText(cellData.mTitle);
holder.introLabel.setText(cellData.mIntro);
}
任何帮助都会很棒。
编辑:我已尝试按照以下评论中列出的可能重复进行操作 - Android OutOfMemoryError:?
解决方案不能解决我的问题。我还尝试将图像缩小,将我对MDPI的图像移动到HDPI,将LDPI移动到MDPI。