Browse SDKs · Android
Platform
SDKsAndroid

Receive messages

Use OnAdvanceMsgListener to receive new, offline, and online-only messages.

Copy

Configure the advanced message listener to receive incoming real-time messages, batched offline messages, online-only transient messages, and message status updates. The Android SDK maintains a single global advanced message listener; register it once during SDK initialization or user authentication in your application's shared messaging service layer to avoid accidental overwrites across activities or fragments.

Code example

private final OnAdvanceMsgListener messageListener = new OnAdvanceMsgListener() {
    @Override
    public void onRecvNewMessage(Message message) {
        // Handle incoming real-time message; merge by clientMsgID
        mergeMessage(message);
    }

    @Override
    public void onRecvOfflineNewMessage(List<Message> messages) {
        // Handle batched offline messages upon reconnection
        for (Message message : messages) {
            mergeMessage(message);
        }
    }

    @Override
    public void onRecvOnlineOnlyMessage(Message message) {
        // Handle transient online-only message (not persisted locally)
        handleOnlineOnlyMessage(message);
    }
};

public void registerMessageListener() {
    OpenIMClient.getInstance().messageManager.setAdvancedMsgListener(messageListener);
}

Callback methods

MethodParameterDescription
onRecvNewMessageMessageDelivers an individual real-time incoming message.
onRecvOfflineNewMessageList<Message>Delivers a batch of offline messages synchronized after reconnecting or logging in.
onRecvOnlineOnlyMessageMessageDelivers a transient online-only message (not counted in unread counts or persisted to disk).

State synchronization model

  • When receiving real-time or offline messages, first resolve the target conversation context using sessionType, sendID, recvID, and groupID. Then deduplicate and update the message list using clientMsgID as the unique key.
  • Messages delivered through onRecvOnlineOnlyMessage represent temporary status updates or ephemeral signals and typically should not be written to the local message database.
  • Detailed message lifecycle events (such as revokes, deletions, modifications, and read receipts) are documented in their respective guides and summarized in the Message overview.