我有一个方法,其中包含一个可以让用户左右滑动的ImageSwitcher,所选图像会显示在屏幕中央。我对低内存手机上的高分辨率图像进行了一些图像缩放,但当快速从左向右滑动时仍然会遇到Bitmap OutOfMemoryEexception异常。我想将行
谢谢。
方法:
mSwitcher.setImageURI(myUri);
(这是导致OOME的行)转换为使用弱引用,以便它可以自动垃圾回收。我该如何做?这是性能优化此方法的最佳方式吗?谢谢。
方法:
public void onItemSelected(AdapterView parent, View v, int position, long id) {
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "MyAppName");
File[] cachedOnSDImages = mediaStorageDir.listFiles();
countArray = new Integer[cachedOnSDImages.length];
fileArray = new String[cachedOnSDImages.length];
fileArray[position] = cachedOnSDImages[position].getAbsolutePath();
Uri myUri = Uri.parse(fileArray[position]);
mSwitcher.setImageURI(myUri); // weakly reference myUri in this line
this.currentpos = position;
}
我应该在这里添加mSwitcher被实例化了:
private void makeSwitcher() {
mSwitcher = (ImageSwitcher) findViewById(R.id.switcher);
mSwitcher.setFactory(this);
mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.fade_in));
mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.fade_out));
}