doc/KEEP_LAST_FRAME.md
KeepLastFrameVideo 是一个 Demo 级播放器,用来验证“自然播放完成后停留在最后一帧”的交互语义。它不会改变基础播放器的默认完成态,也不会全局影响其他播放器页面。
主页面入口:完成保留最后一帧
主要类:
app/src/main/java/com/example/gsyvideoplayer/KeepLastFrameDemoActivity.javaapp/src/main/java/com/example/gsyvideoplayer/video/KeepLastFrameVideo.javaapp/src/main/res/layout/activity_keep_last_frame_demo.xmlkeepLastFrameVideo.setKeepLastFrameWhenComplete(true);
关闭后恢复默认完成态:
keepLastFrameVideo.setKeepLastFrameWhenComplete(false);
Demo 内部通过 isLastAutoCompleteRetainedSurface() 判断本次自然完成时是否确实保留了 render view。
KeepLastFrameVideo#onAutoCompletion() 在开启 flag 时不会调用基础类默认的完成释放逻辑,而是:
CURRENT_STATE_AUTO_COMPLETE。onAutoComplete 回调。onCompletion()、重新播放和页面销毁仍走原释放逻辑,避免资源长期残留。
./gradlew :app:assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk
adb shell am start -n com.example.gsyvideoplayer/.MainActivity
真机检查:
完成保留最后一帧。FATAL EXCEPTION、IllegalStateException 或 Surface 相关 crash。