diff options
author | Michael Manganiello <adamantike@users.noreply.github.com> | 2022-09-09 02:03:07 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-09 02:03:07 +0000 |
commit | 935471d95cba81d4e4f5463ffc0a905a6481a8ef (patch) | |
tree | ade7c5743f0821526f76341e88427b0a9f9088ea /app/src/main/java | |
parent | 7293b9e75823441b921f6a1fb8c222a1528f6462 (diff) | |
download | infinity-for-reddit-935471d95cba81d4e4f5463ffc0a905a6481a8ef.tar infinity-for-reddit-935471d95cba81d4e4f5463ffc0a905a6481a8ef.tar.gz infinity-for-reddit-935471d95cba81d4e4f5463ffc0a905a6481a8ef.tar.bz2 infinity-for-reddit-935471d95cba81d4e4f5463ffc0a905a6481a8ef.tar.lz infinity-for-reddit-935471d95cba81d4e4f5463ffc0a905a6481a8ef.tar.xz infinity-for-reddit-935471d95cba81d4e4f5463ffc0a905a6481a8ef.tar.zst infinity-for-reddit-935471d95cba81d4e4f5463ffc0a905a6481a8ef.zip |
Fix memory leak on BigImageViewer (#1067)
Leak found using LeakCanary. Steps:
1. Enable the LeakCanary dependency.
1. Open the app.
1. Open any post image, and go back.
According to `Piasy/BigImageViewer` documentation,
[Initialize section](https://github.com/Piasy/BigImageViewer/blob/9cc045e8146dc8833a487576745f17158bae4a4a/README.md#initialize),
the app context must be used to avoid memory leaks.
Leak trace:
```
2022-09-04 19:51:38.154 13332-13332/ml.docilealligator.infinityforreddit.debug D/LeakCanary:
┬───
│ GC Root: Thread object
│
├─ android.os.HandlerThread instance
│ Leaking: NO (PathClassLoader↓ is not leaking)
│ Thread name: 'LeakCanary-Heap-Dump'
│ ↓ Thread.contextClassLoader
├─ dalvik.system.PathClassLoader instance
│ Leaking: NO (BigImageViewer↓ is not leaking and A ClassLoader is never leaking)
│ ↓ ClassLoader.runtimeInternalObjects
├─ java.lang.Object[] array
│ Leaking: NO (BigImageViewer↓ is not leaking)
│ ↓ Object[257]
├─ com.github.piasy.biv.BigImageViewer class
│ Leaking: NO (a class is never leaking)
│ ↓ static BigImageViewer.sInstance
│ ~~~~~~~~~
├─ com.github.piasy.biv.BigImageViewer instance
│ Leaking: UNKNOWN
│ Retaining 969.9 kB in 14812 objects
│ ↓ BigImageViewer.mImageLoader
│ ~~~~~~~~~~~~
├─ com.github.piasy.biv.loader.glide.GlideImageLoader instance
│ Leaking: UNKNOWN
│ Retaining 969.9 kB in 14811 objects
│ ↓ GlideImageLoader.mRequestManager
│ ~~~~~~~~~~~~~~~
├─ com.bumptech.glide.RequestManager instance
│ Leaking: UNKNOWN
│ Retaining 969.9 kB in 14808 objects
│ context instance of ml.docilealligator.infinityforreddit.activities.ViewPostDetailActivity with mDestroyed = true
│ ↓ RequestManager.context
│ ~~~~~~~
╰→ ml.docilealligator.infinityforreddit.activities.ViewPostDetailActivity instance
Leaking: YES (ObjectWatcher was watching this because ml.docilealligator.infinityforreddit.activities.
ViewPostDetailActivity received Activity#onDestroy() callback and Activity#mDestroyed is true)
Retaining 966.2 kB in 14703 objects
key = f69c74cc-521e-4f6c-b5c8-8f787e27df75
watchDurationMillis = 5547
retainedDurationMillis = 541
mApplication instance of ml.docilealligator.infinityforreddit.Infinity
mBase instance of androidx.appcompat.view.ContextThemeWrapper
```
Diffstat (limited to 'app/src/main/java')
3 files changed, 3 insertions, 3 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewImageOrGifActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewImageOrGifActivity.java index eab46345..e3901baf 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewImageOrGifActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewImageOrGifActivity.java @@ -146,7 +146,7 @@ public class ViewImageOrGifActivity extends AppCompatActivity implements SetAsWa getTheme().applyStyle(ContentFontFamily.valueOf(mSharedPreferences .getString(SharedPreferencesUtils.CONTENT_FONT_FAMILY_KEY, ContentFontFamily.Default.name())).getResId(), true); - BigImageViewer.initialize(GlideImageLoader.with(this)); + BigImageViewer.initialize(GlideImageLoader.with(this.getApplicationContext())); setContentView(R.layout.activity_view_image_or_gif); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java index f9f647b4..7d287bde 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java @@ -150,7 +150,7 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele super.onCreate(savedInstanceState); - BigImageViewer.initialize(GlideImageLoader.with(this)); + BigImageViewer.initialize(GlideImageLoader.with(this.getApplicationContext())); setContentView(R.layout.activity_view_post_detail); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewRedditGalleryImageOrGifFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewRedditGalleryImageOrGifFragment.java index fe9dac8b..e7f6fa33 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewRedditGalleryImageOrGifFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewRedditGalleryImageOrGifFragment.java @@ -122,7 +122,7 @@ public class ViewRedditGalleryImageOrGifFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - BigImageViewer.initialize(GlideImageLoader.with(activity)); + BigImageViewer.initialize(GlideImageLoader.with(activity.getApplicationContext())); View rootView = inflater.inflate(R.layout.fragment_view_reddit_gallery_image_or_gif, container, false); |