Android - MediaController 活动泄漏

Hen*_*ons 5 android memory-leaks mediacontroller android-mediaplayer

我正在使用 MediaPlayer 和 MediaController 对象来传输音频。关闭活动时,我收到窗口泄漏异常。

我的活动中有以下内容,根本没有帮助。

@Override
protected void onStop() {
    super.onStop();
    mediaController.hide();

}
Run Code Online (Sandbox Code Playgroud)

我得到以下堆栈跟踪:

01-24 20:11:18.317:E / WindowManager(26286):活动co.uk.ing_simmons.aberdeensoundsites.RecordingDetails已泄露最初在此处添加的窗口com.android.internal.policy.impl.PhoneWindow$DecorView@4182d590 01 -24 20:11:18.317:E / WindowManager(26286):android.view.WindowLeaked:活动co.uk.ing_simmons.aberdeensoundsites.RecordingDetails已泄漏窗口com.android.internal.policy.impl.PhoneWindow$DecorView@4182d590最初添加在这里 01-24 20:11:18.317: E/WindowManager(26286): 在 android.view.ViewRootImpl.(ViewRootImpl.java:418) 01-24 20:11:18.317: E/WindowManager(26286):在 android.view.WindowManagerImpl.addView(WindowManagerImpl.java:294) 01-24 20:11:18.317:E/WindowManager(26286):在 android.view.WindowManagerImpl.addView(WindowManagerImpl.java:226) 01-24 20 :11:18.317:E / WindowManager(26286):在android.view.WindowManagerImpl $ CompatModeWrapper.addView(WindowManagerImpl.java:151)01-24 20:11:18.317:E / WindowManager(26286):在android.view。窗口 $LocalWindowManager.addView(Window.java:547) 01-24 20:11:18.317: E/WindowManager(26286): 在 android.widget.MediaController.show(MediaController.java:470) 01-24 20:11: 18.317: E/WindowManager(26286): 在 android.widget.MediaController.show(MediaController.java:429) 01-24 20:11:18.317: E/WindowManager(26286): 在 co.uk.ing_simmons.aberdeensoundsites.RecordingDetails $2.run(RecordingDetails.java:202) 01-24 20:11:18.317: E/WindowManager(26286): 在 android.os.Handler.handleCallback(Handler.java:615) 01-24 20:11:18.317: E / WindowManager(26286):在android.os.Handler.dispatchMessage(Handler.java:92)01-24 20:11:18.317:E / WindowManager(26286):在android.os.Looper.loop(Looper.java) :153)01-24 20:11:18.317:E / WindowManager(26286):在android.app.ActivityThread.main(ActivityThread.java:5006)01-24 20:11:18.317:E / WindowManager(26286):在java.lang.reflect.Method.invokeNative(本机方法)01-24 20:11:18.317:E / WindowManager(26286):在java.lang.reflect.Method.invoke(Method.java:511)01-24 20:11:18.317:E / WindowManager(26286):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:821)01-24 20:11:18.317:E / WindowManager(26286):在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584) 01-24 20:11:18.317: E/WindowManager(26286): 在 dalvik.system.NativeStart.main(本机方法) 01-24 20:11:18.325: E/InputEventReceiver(26286): 通道 '41c81858 Panel:co.uk.ing_simmons.aberdeensoundsites/co.uk.ing_simmons.aberdeensoundsites.RecordingDetails (客户端)' ~ 发布者关闭了输入通道或发生错误。事件=0x9

这似乎指向第 202 行,也就是这一行:

mediaController.show();
Run Code Online (Sandbox Code Playgroud)

我已经在谷歌上搜索了几个小时,实际上所有内容都说将“mediaController.hide()”放入 onStop 方法中以防止泄漏。这显然不起作用,所以这里的任何帮助或指导将不胜感激。

谢谢

Sca*_*bat 1

你可能想颠倒线条

super.onStop();
mediaController.hide();
Run Code Online (Sandbox Code Playgroud)

mediaController.hide();
super.onStop();
Run Code Online (Sandbox Code Playgroud)

  • 不起作用。我仍然收到“窗口泄漏”错误。 (7认同)