@Override
public void onStop() {
- super.onStop();
+ Log_OC.d(TAG, "onStop starts");
if (mLoadBitmapTask != null) {
mLoadBitmapTask.cancel(true);
mLoadBitmapTask = null;
}
-
+ super.onStop();
}
/**
if (mBitmap != null) {
mBitmap.recycle();
System.gc();
+ // putting this in onStop() is just the same; the fragment is always destroyed by the ViewPager
+ // when swipes further than the valid offset, and onStop() is never called before than that
}
super.onDestroy();
}
}
} catch (OutOfMemoryError e) {
- Log_OC.e(TAG, "Out of memory occured for file " + storagePath, e);
+ Log_OC.w(TAG, "Out of memory rendering file " + storagePath + " in full size; scaling down");
if (isCancelled()) return result;
} else {
showErrorMessage();
}
+ if (mBitmap != result) {
+ // unused bitmap, release it! (just in case)
+ result.recycle();
+ }
}
@SuppressLint("InlinedApi")
if (mImageViewRef != null) {
final ImageViewCustom imageView = mImageViewRef.get();
if (imageView != null) {
- imageView.setBitmap(result);
imageView.setImageBitmap(result);
imageView.setVisibility(View.VISIBLE);
- mBitmap = result;
- } // else , silently finish, the fragment was destroyed
+ mBitmap = result; // needs to be kept for recycling when not useful
+ }
}
if (mMessageViewRef != null) {
final TextView messageView = mMessageViewRef.get();