Android IjkPlayer内存泄漏问题

舒适边缘 2018-07-07 03:49:01
Android IjkPlayer内存泄漏问题,退出播放的acrivity过段时间闪屏到主页(求大神帮助)。报如下错误:
A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
java.lang.Throwable: Explicit termination method 'release' not called
at dalvik.system.CloseGuard.open(CloseGuard.java:184)
at android.view.Surface.setNativeObjectLocked(Surface.java:433)
at android.view.Surface.<init>(Surface.java:136)
at com.dou361.jjdxm.ijkplayer.widget.TextureRenderView$InternalSurfaceHolder.openSurface(TextureRenderView.java:199)
at com.dou361.jjdxm.ijkplayer.widget.TextureRenderView$InternalSurfaceHolder.bindToMediaPlayer(TextureRenderView.java:172)
at com.dou361.jjdxm.ijkplayer.widget.IjkVideoView.bindSurfaceHolder(IjkVideoView.java:765)
at com.dou361.jjdxm.ijkplayer.widget.IjkVideoView.openVideo(IjkVideoView.java:462)
at com.dou361.jjdxm.ijkplayer.widget.IjkVideoView.access$30(IjkVideoView.java:365)
at com.dou361.jjdxm.ijkplayer.widget.IjkVideoView$7.onSurfaceCreated(IjkVideoView.java:799)
at com.dou361.jjdxm.ijkplayer.widget.TextureRenderView$SurfaceCallback.onSurfaceTextureAvailable(TextureRenderView.java:268)
at android.view.TextureView.getHardwareLayer(TextureView.java:385).......
...全文
648 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
舒适边缘 2018-07-09
  • 打赏
  • 举报
回复
引用 1 楼 z979451341 的回复:
在onDestroy里添加 stop 、release的命令

引用的别人的Demo,Demo本身onDestroy时就调用了stop 、release的命令。Demo单纯的视频播放没用出现内存泄漏情况。整合到自己的项目的时候,出现了内存泄漏情况。
舒适边缘 2018-07-09
  • 打赏
  • 举报
回复
在onDestroy里添加 stop 、release的命令也没用的。
@Override
protected void onDestroy() {
super.onDestroy();
if (player != null) {
player.onDestroy();
}
}

public PlayerView onDestroy() {
orientationEventListener.disable();
mHandler.removeMessages(MESSAGE_RESTART_PLAY);
mHandler.removeMessages(MESSAGE_SEEK_NEW_POSITION);
videoView.stopPlayback();
return this;
}

/**
* 停止视频
*/
public void stopPlayback() {
if (mMediaPlayer != null) {
mMediaPlayer.stop();
mMediaPlayer.release();
mMediaPlayer = null;
mCurrentState = PlayStateParams.STATE_IDLE;
mTargetState = PlayStateParams.STATE_IDLE;
AudioManager am = (AudioManager) mAppContext.getSystemService(Context.AUDIO_SERVICE);
am.abandonAudioFocus(null);
}
}
键盘舞者113 2018-07-07
  • 打赏
  • 举报
回复
在onDestroy里添加 stop 、release的命令

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧