Has any of you encountered a similar memory leak? This is how I'm handling the VideoView at the moment
@Override
protected void onFinishInflate() {
super.onFinishInflate();
ButterKnife.bind(this);
Uri videoUri = Uri.parse(String.format("android.resource://%s/%s", getContext().getPackageName(), videoRes));
videoView.setVideoURI(videoUri);
videoView.setOnPreparedListener(mp -> {
mp.setLooping(true);
videoView.start();
});
}
This is what I get on LeakCanary
Any help appreciated!
When using ButterKnife with Fragments, you need to use the
Unbinder
inonDestroyView()
to correctly dereference the Fragment's Views -- since Fragments have different life cycles to Activities.There is a related issue here.
If you are using Butterknife make sure to unbind, and if you aint't make sure to call videoView.stopPlayback() in your onDestroy
Call
videoView.suspend()
inonPause()
oronDestory()
.This fixed it for me within an
AppCompatActivity
that's not using ButterknifeStep 1: Create a utility class
Step 2: within your Activity, use this utility class
Credit: https://medium.com/@chauyan/confirmed-videoview-leak-on-android-ac502856a6cf