Q: OnRealTimeMessageSent callback not being fired reliably? With Google Play Game Services, I'm trying to implement a CallBack such that, if there is an issue with sending a message, then I need to resolve it (as each player "passes" their bid to the next player, and all other players need to see what the player that passed bid)
I thought I would try and use the following to instantiate a RealTimeReliableMessageSentListener for that round of messages, so that I can tell if the message was sent and received by everyone:  
(I add the tokenID returned by the call to an ArrayList, and then check off remove each tokenID as it comes back in to track when all messages from this round are received)
@Override
    public void sendReadyToPlay() {
        dLog("Sending ReadyToPlay");
        // Broadcast that I'm ready, and see that they are ready
            if (!mMultiplayer){
                return; // playing against computer
            }
            // First byte in message indicates whether it's a final score or not
            mMsgBuf[0] = (byte) ('R');
            readyToPlayTokens.clear();
            // Send to every other participant.
            for (Participant p : mParticipants) {
                dLog("Participant:" + p.getParticipantId());
                if (p.getParticipantId().equals(mMyId)) {
                    continue;}
                if (p.getStatus() != Participant.STATUS_JOINED){
                    continue;
                }

                readyToPlayTokens.add(mHelper.getGamesClient().sendReliableRealTimeMessage(new RealTimeReliableMessageSentListener() {

                    @Override
                    public void onRealTimeMessageSent(int statusCode, int tokenId, String recipientParticipantId){
                        dLog("onRealTimeMessageSent number two and size is: " + readyToPlayTokens.size());
                        if(readyToPlayTokens.contains(tokenId)){
                            readyToPlayTokens.remove(tokenId);
                        }

                        dLog("onRealTimeMessageSent number two and size is: " + readyToPlayTokens.size());
                        if (statusCode != GamesClient.STATUS_OK) {
                                mGHInterface.onRealTimeMessageReceived("RTPProblem:" + recipientParticipantId);
                            } else if (readyToPlayTokens.size() == 0) {
                                mGHInterface.beginRound();
                            }

                    }
                }, mMsgBuf, mRoomId,  p.getParticipantId()));
                dLog("sent to:" +  p.getParticipantId());
            }
        }

I can see the messages coming in almost every time from one device to another, so I can see that the messages are going through, BUT, the RealTimeReliableMessageSent listener  is only being fired about 50-60 percent of the time, which isn't very reliable!  :)  
Can anyone see what I might be doing wrong to keep the listener from firing reliably?

A: may be it happens because you are using anonymous inner class, try to use in different way like implementing your activity RealTimeReliableMessageSentListener
