NullPointerException is thrown while destroying the resources. The problem happens if frameVideoView.setup is not called (when the videoView is not used).
In this method placeholderView is null and it causes the problem.
E/AndroidRuntime: FATAL EXCEPTION: main
Process: my.app.android, PID: 30161
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setVisibility(int)' on a null object reference
at com.mklimek.frameviedoview.TextureViewImpl.removeVideo(TextureViewImpl.java:147)
at com.mklimek.frameviedoview.TextureViewImpl.onSurfaceTextureDestroyed(TextureViewImpl.java:103)
at android.view.TextureView.destroySurface(TextureView.java:237)
at android.view.TextureView.destroyHardwareResources(TextureView.java:340)
at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:216)
at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223)
at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223)
at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223)
at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223)
at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223)
at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223)
at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223)
at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223)
at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223)
at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223)
at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223)
at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223)
at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223)
at android.view.ThreadedRenderer.destroyHardwareResources(ThreadedRenderer.java:211)
at android.view.ViewRootImpl.destroyHardwareResources(ViewRootImpl.java:965)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1802)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1487)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7450)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:920)
at android.view.Choreographer.doCallbacks(Choreographer.java:695)
at android.view.Choreographer.doFrame(Choreographer.java:631)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:906)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7229)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
NullPointerException is thrown while destroying the resources. The problem happens if frameVideoView.setup is not called (when the videoView is not used).
In this method placeholderView is null and it causes the problem.
E/AndroidRuntime: FATAL EXCEPTION: main Process: my.app.android, PID: 30161 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setVisibility(int)' on a null object reference at com.mklimek.frameviedoview.TextureViewImpl.removeVideo(TextureViewImpl.java:147) at com.mklimek.frameviedoview.TextureViewImpl.onSurfaceTextureDestroyed(TextureViewImpl.java:103) at android.view.TextureView.destroySurface(TextureView.java:237) at android.view.TextureView.destroyHardwareResources(TextureView.java:340) at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:216) at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223) at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223) at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223) at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223) at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223) at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223) at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223) at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223) at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223) at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223) at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223) at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223) at android.view.ThreadedRenderer.destroyResources(ThreadedRenderer.java:223) at android.view.ThreadedRenderer.destroyHardwareResources(ThreadedRenderer.java:211) at android.view.ViewRootImpl.destroyHardwareResources(ViewRootImpl.java:965) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1802) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1487) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7450) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:920) at android.view.Choreographer.doCallbacks(Choreographer.java:695) at android.view.Choreographer.doFrame(Choreographer.java:631) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:906) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:158) at android.app.ActivityThread.main(ActivityThread.java:7229) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)