Basic-Video-Call
Basic-Video-Call copied to clipboard
leaked ServiceConnection android.bluetooth.BluetoothHeadset
2019-07-01 10:54:04.382 25931-25931/io.agora.tutorials1v1vcall E/ActivityThread: Activity io.agora.tutorials1v1vcall.VideoChatViewActivity has leaked ServiceConnection android.bluetooth.BluetoothHeadset$2@c5d235b that was originally bound here
android.app.ServiceConnectionLeaked: Activity io.agora.tutorials1v1vcall.VideoChatViewActivity has leaked ServiceConnection android.bluetooth.BluetoothHeadset$2@c5d235b that was originally bound here
at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:1344)
at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:1239)
at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1487)
at android.app.ContextImpl.bindServiceAsUser(ContextImpl.java:1467)
at android.bluetooth.BluetoothHeadset.doBind(BluetoothHeadset.java:305)
at android.bluetooth.BluetoothHeadset.<init>(BluetoothHeadset.java:298)
at android.bluetooth.BluetoothAdapter.getProfileProxy(BluetoothAdapter.java:1936)
at io.agora.rtc.internal.AudioRoutingController.initialize(AudioRoutingController.java:674)
at io.agora.rtc.internal.RtcEngineImpl.<init>(RtcEngineImpl.java:347)
at io.agora.rtc.RtcEngine.create(RtcEngine.java:61)
at io.agora.tutorials1v1vcall.VideoChatViewActivity.initializeAgoraEngine(VideoChatViewActivity.java:177)
at io.agora.tutorials1v1vcall.VideoChatViewActivity.initAgoraEngineAndJoinChannel(VideoChatViewActivity.java:79)
at io.agora.tutorials1v1vcall.VideoChatViewActivity.onCreate(VideoChatViewActivity.java:74)
at android.app.Activity.performCreate(Activity.java:6875)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2659)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2767)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1514)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:163)
at android.app.ActivityThread.main(ActivityThread.java:6221)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
How to replicate:
- Press the call end button and read the service leak message.
Devices tested on: Pixel Android 9 API 28 - Can't reproduce. Redmi 5A Android 7.1.2 API 25 - memory leak happens.
@sudhirkhanger Thanks for your feedback Which version of SDK are you with?
@gui 2.4.0
@sudhirkhanger Sorry, so far I can not reproduce this issue.
But you can try with another way. Create RTC engine under application context. You can use the object in full app lifecycle.
FWIW I can reproduce with even version 2.8.0. I cloned the current repo, added version 2.8.0, and ran the project. When I disconnect using the default red button the service leak happens.
2019-07-09 09:13:12.039 27510-27510/io.agora.tutorials1v1vcall E/ActivityThread: Activity io.agora.tutorials1v1vcall.VideoChatViewActivity has leaked ServiceConnection android.bluetooth.BluetoothHeadset$2@b1c8855 that was originally bound here
android.app.ServiceConnectionLeaked: Activity io.agora.tutorials1v1vcall.VideoChatViewActivity has leaked ServiceConnection android.bluetooth.BluetoothHeadset$2@b1c8855 that was originally bound here
at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:1344)
at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:1239)
at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1487)
at android.app.ContextImpl.bindServiceAsUser(ContextImpl.java:1467)
at android.bluetooth.BluetoothHeadset.doBind(BluetoothHeadset.java:305)
at android.bluetooth.BluetoothHeadset.<init>(BluetoothHeadset.java:298)
at android.bluetooth.BluetoothAdapter.getProfileProxy(BluetoothAdapter.java:1936)
at io.agora.rtc.internal.AudioRoutingController.initialize(AudioRoutingController.java:668)
at io.agora.rtc.internal.RtcEngineImpl.nativeObjectInit(Native Method)
at io.agora.rtc.internal.RtcEngineImpl.<init>(RtcEngineImpl.java:174)
at io.agora.rtc.RtcEngine.create(RtcEngine.java:59)
at io.agora.tutorials1v1vcall.VideoChatViewActivity.initializeAgoraEngine(VideoChatViewActivity.java:177)
at io.agora.tutorials1v1vcall.VideoChatViewActivity.initAgoraEngineAndJoinChannel(VideoChatViewActivity.java:79)
at io.agora.tutorials1v1vcall.VideoChatViewActivity.onCreate(VideoChatViewActivity.java:74)
at android.app.Activity.performCreate(Activity.java:6875)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2659)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2767)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1514)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:163)
at android.app.ActivityThread.main(ActivityThread.java:6221)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
Anyway I will keep looking.
Thanks. I found the root cause, internal sdk error, I believe we will fix this asap.