【发布时间】:2012-09-24 02:46:17
【问题描述】:
可能重复:
Android: Strange out of memory issue while loading an image to a Bitmap object
OutOfMemoryError: bitmap size exceeds VM budget :- Android
我知道已经有很多关于这方面的话题,但无论我尝试什么似乎都不起作用。
我尝试了几种 onDestroy 技巧,包括回收位图、将其设置为 null 等。 不确定我的代码是否与其他情况有任何不同?好像是这样的... 我正在使用 TouchImageView 扩展,所以我可以使用捏缩放,所以也许这使它更复杂?
无论如何,这是我的代码。谁能指出我该如何解决这个问题(顺便说一句,无需缩小位图)?
public class PageActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.page);
Intent parent = getIntent();
int pagenumber = parent.getIntExtra("pagenumber", 1);
int resID = getResources().getIdentifier("page"+pagenumber , "drawable", getPackageName());
TouchImageView img = new TouchImageView(this);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resID);
img.setImageBitmap(bitmap);
img.setMaxZoom(4f);
LinearLayout rootview = (LinearLayout) findViewById(R.id.RootView);
rootview.addView(img);
}
}
【问题讨论】:
-
我注意到 onDestroy() 没有开始调用,因为我使用的是 tabhost。因此,我尝试在其中放置一个 ontablistener 并以这种方式手动调用 ondestroy,但是当活动尚未开始时它会被调用,因此当我将 recycle() 内容放入其中时,我尝试使用回收的位图:S
-
我已经想出了一个很好的方法来阻止内存泄漏,那么这个主题可以重新打开以便我发布它吗?我认为其他人可能会从中受益。
标签: android bitmap out-of-memory