aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorMichael Manganiello <adamantike@users.noreply.github.com>2022-09-09 02:03:07 +0000
committerGitHub <noreply@github.com>2022-09-09 02:03:07 +0000
commit935471d95cba81d4e4f5463ffc0a905a6481a8ef (patch)
treeade7c5743f0821526f76341e88427b0a9f9088ea /app
parent7293b9e75823441b921f6a1fb8c222a1528f6462 (diff)
downloadinfinity-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')
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewImageOrGifActivity.java2
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java2
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewRedditGalleryImageOrGifFragment.java2
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);