Hi!
I use the latest version of UIKit (com.sendbird.sdk:uikit:2.2.3), and I have crash in production when user switches between ChannelListFragment
and other fragment a bit fast than regular user.
This the log of the crash:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: health.alike.app, PID: 11531
java.lang.NullPointerException: Attempt to invoke interface method 'void com.sendbird.android.handlers.GroupChannelCollectionHandler.onChannelsUpdated(com.sendbird.android.handlers.GroupChannelContext, java.util.List)' on a null object reference
at com.sendbird.android.GroupChannelCollection$7.run(GroupChannelCollection.java:542)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Likely it happens inside ChannelListViewModel
.
Also, I noticed that when a user switches between fragments a bit faster initChannelCollection()
and disposeChannelCollection()
don’t go one after another as they supposed to. Hence, I think that’s why crash appears:
D/SBUIKIT: [19:21:11.812 ChannelListViewModel:initChannelCollection():36] >> ChannelListViewModel::initChannelCollection()
D/SBUIKIT: [19:21:11.959 ChannelListViewModel:initChannelCollection():36] >> ChannelListViewModel::initChannelCollection()
D/SBUIKIT: [19:21:12.292 ChannelListViewModel:disposeChannelCollection():45] >> ChannelListViewModel::disposeChannelCollection()
D/SBUIKIT: [19:21:12.745 ChannelListViewModel:disposeChannelCollection():45] >> ChannelListViewModel::disposeChannelCollection()
Normal call stack is supposed to look like this:
D/SBUIKIT: [19:32:46.707 ChannelListViewModel:initChannelCollection():36] >> ChannelListViewModel::initChannelCollection()
D/SBUIKIT: [19:32:48.123 ChannelListViewModel:disposeChannelCollection():45] >> ChannelListViewModel::disposeChannelCollection()
D/SBUIKIT: [19:32:49.775 ChannelListViewModel:initChannelCollection():36] >> ChannelListViewModel::initChannelCollection()
D/SBUIKIT: [19:32:50.848 ChannelListViewModel:disposeChannelCollection():45] >> ChannelListViewModel::disposeChannelCollection()