Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Fixes a leak caused by AudioManager using an Activity context, see
public class ActivityUsingVideoView extends Activity {
@Override protected void attachBaseContext(Context base) {
* Fixes a leak caused by AudioManager using an Activity context.
* Tracked at and
public class AudioServiceActivityLeak extends ContextWrapper {
AudioServiceActivityLeak(Context base) {
public static ContextWrapper preventLeakOf(Context base) {
return new AudioServiceActivityLeak(base);
@Override public Object getSystemService(String name) {
if (Context.AUDIO_SERVICE.equals(name)) {
return getApplicationContext().getSystemService(name);
return super.getSystemService(name);

This is truly helpful. Thank you.

it works! thank you man.

Great! Thank you Sir!

This made my day! Awesome Work!

Awesome. Thanks!!

I use above attachBaseContext & AudioServiceActivityLeak for my video player (extend VideoView) plays 25 of small video files with duration between 15 seconds and 32 seconds in a media box with Android 4.4.2 forever, the MediaPlayer of Android 4.4.2 crashes after 14 hours, I did two times for this testing, I got same result.
If I do not use attachBaseContext & AudioServiceActivityLeak for my video player, then my video player stops to play these 25 of video files after 27 hours (not crash)
can anyone help me explain why ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment