Crash on stopStreaming() and Destory()
Hi I'm wraping your library to basic4android all thing is ok and i will got video and audio and preview in perfectly but after calling for stopping the stream with two method stopStreaming() or Destroy() app will crash for the stopstreamin() not have any errors in log and force closes but for destroy() it's error for the collector please help what is happen it not stopping till crashing
any detail?error log?
after stopstreaming() without any error log app crashes what happen?
is that appears after you wrapped it with basic4android?
FATAL EXCEPTION: main Process: com.xxxx.xxx, PID: 29933 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean me.lake.librestreaming.client.RESVideoClient.stopPreview(boolean)' on a null object reference at me.lake.librestreaming.client.RESClient.stopPreview(RESClient.java:140) at com.xxxx.xxx.streaming2.BaseStreamingActivity.onSurfaceTextureDestroyed(BaseStreamingActivity.java:251) at android.view.TextureView.destroySurface(TextureView.java:237) at android.view.TextureView.onDetachedFromWindowInternal(TextureView.java:227) at android.view.View.dispatchDetachedFromWindow(View.java:14578) at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3065) at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3065) at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3065) at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3065) at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3065) at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3065) at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3065) at android.view.ViewRootImpl.dispatchDetachedFromWindow(ViewRootImpl.java:3080) at android.view.ViewRootImpl.doDie(ViewRootImpl.java:5618) at android.view.ViewRootImpl.die(ViewRootImpl.java:5595) at android.view.WindowManagerGlobal.removeViewLocked(WindowManagerGlobal.java:397) at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:352) at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:116) at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3888) at android.app.ActivityThread.-wrap5(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1408) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5443) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
i not tested but in wrapped library as class this problem occured
it looks like system call textureview.onSurfaceTextureDestroyed() after activity.onDestroy(). it appears on android7.1.1beta. are you testing it in 7.1.1?
My Testing OS is Android 6.0 but problem still available
This bug is still available in my test demo app with android api version 18 I'am getting this error log
06-08 15:35:24.382 7687-7687/me.lake.librestreaming.sample E/AndroidRuntime: FATAL EXCEPTION: main java.lang.NullPointerException at me.lake.librestreaming.client.RESClient.stopPreview(RESClient.java:140) at me.lake.librestreaming.sample.BaseStreamingActivity.onSurfaceTextureDestroyed(BaseStreamingActivity.java:289) at android.view.TextureView.destroySurface(TextureView.java:239) at android.view.TextureView.access$000(TextureView.java:105) at android.view.TextureView$1.run(TextureView.java:220) at android.view.HardwareRenderer$Gl20Renderer.safelyRun(HardwareRenderer.java:2010) at android.view.TextureView.onDetachedFromWindow(TextureView.java:217) at android.view.View.dispatchDetachedFromWindow(View.java:12160) at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2568) at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2568) at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2568) at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2568) at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2568) at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2568) at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2568) at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2568) at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2568) at android.view.ViewRootImpl.dispatchDetachedFromWindow(ViewRootImpl.java:2825) at android.view.ViewRootImpl.doDie(ViewRootImpl.java:5225) at android.view.ViewRootImpl.die(ViewRootImpl.java:5208) at android.view.WindowManagerGlobal.removeViewLocked(WindowManagerGlobal.java:359) at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:309) at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:84) at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3560) at android.app.ActivityThread.access$1200(ActivityThread.java:144) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1312) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5166) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:745) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:561) at dalvik.system.NativeStart.main(Native Method)
I try to fixed this issue by check null but i don't know that make any effect? /** * * @param releaseTexture true if you won`t reuse this surfaceTexture later */ public void stopPreview(boolean releaseTexture) { if(videoClient != null) { videoClient.stopPreview(releaseTexture); LogTools.d("RESClient,stopPreview()"); } }
Have any idea?
that is weird.In some case, onSurfaceTextureDestroyed was called after OnDestroy and I don`t know why.