ParseLiveQuery-Android
ParseLiveQuery-Android copied to clipboard
Subscribing to Parse Live Query the first time doesn't work
In my activity's onResume()
I am subscribing to live query
@Override
protected void onResume() {
SubscriptionHandling<ParseObject> subscriptionHandling = mParseLiveQueryClient.subscribe(messageQuery);
subscriptionHandling.handleEvents(new SubscriptionHandling.HandleEventsCallback<ParseObject>() {
@Override
public void onEvents(ParseQuery<ParseObject> query, SubscriptionHandling.Event event, ParseObject parseMessage) {
// HANDLING all events
Timber.d("getMessageHistory -> .onEvents");
Timber.i(event.name());
}
});
}
In my logs I see the following:
V/ParseLiveQueryClient: Socket stateChanged
V/ParseLiveQueryClient: Socket stateChanged
V/ParseLiveQueryClient: Socket opened
V/ParseLiveQueryClient: Socket onMessage {"op":"connected","clientId":88}
V/ParseLiveQueryClient: Connected, sending pending subscription
No events are being caught.
When I switch to another application and go back then my onResume()
is triggered again re-registering to live query. I get the following logs: (Notice that this now has the "subscribed" part)
V/ParseLiveQueryClient: Socket stateChanged
V/ParseLiveQueryClient: Socket stateChanged
V/ParseLiveQueryClient: Socket opened
V/ParseLiveQueryClient: Socket onMessage {"op":"connected","clientId":91}
V/ParseLiveQueryClient: Connected, sending pending subscription
V/ParseLiveQueryClient: Socket onMessage {"op":"subscribed","clientId":91,"requestId":1}
This now is able to receive all the events.
Howcome the first registration doesn't work while the 2nd one works?
One ugly work around I came up with is to disconnect and reconnect:
mParseLiveQueryClient.registerListener(new ParseLiveQueryClientCallbacks() {
@Override
public void onLiveQueryClientConnected(ParseLiveQueryClient client) {
Timber.d("[liveQuery] -> .onLiveQueryClientConnected");
if (counter == 0) {
client.disconnect();
counter++;
startWebsocketConnection();
}
}
...
});
Which version of liveQuery are you using? Of course, it's not normal that you need 2 subscriptions to make it work. It should be working the first time.
I am using 1.0.3