我有一個活動imageView
。當我旋轉設備onCreate
開始在後臺線程中創建位圖。經過幾輪旋轉後,我在位圖創建上創建了一個OutOfMemoryError
。 什麼是解決此問題的正確方法?是否有weak references
的決定? 這裏是我的代碼:Android。 OutOfMemory內部錯誤創建位圖內部可觀察時旋轉
public class ImageActivity extends AppcompatActivity implements View.OnTouchListener {
private ImageView imageView;
private Disposable imageDisp;
@Override
public void onDestroy() {
imageDisp.dispose();
super.onDestroy();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image);
imageView = (ImageView) findViewById(R.id.main_imageview);
String source = getIntent().getStringExtra("source");
imageView.setImageBitmap(null);
imageView.setTag(source);
imageDisp = Observable.fromCallable(()->{
File outputFile = new File(source);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap b = BitmapFactory.decodeFile(outputFile.getPath(), options); // here I have a outOfMemory
outputFile.delete();
return b;
}).subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(bitmap -> {
imageView.setImageBitmap(bitmap);
imageView.setOnTouchListener(ImageActivity.this);
},
throwable -> Toast.makeText(this, String.valueOf(throwable.getMessage()), Toast.LENGTH_SHORT).show());
}
}
你的位圖的大小是多少?也許你應該縮小它與位圖選項inSampleSize? – Dimezis
我需要一個大的形象在我的活動。大約5mp。 – Rainmaker