Class BasicMessageChannel<T>


  • public final class BasicMessageChannel<T>
    extends Object
    A named channel for communicating with the Flutter application using basic, asynchronous message passing.

    Messages are encoded into binary before being sent, and binary messages received are decoded into Java objects. The MessageCodec used must be compatible with the one used by the Flutter application. This can be achieved by creating a BasicMessageChannel counterpart of this channel on the Dart side. The static Java type of messages sent and received is Object, but only values supported by the specified MessageCodec can be used.

    The logical identity of the channel is given by its name. Identically named channels will interfere with each other's communication.

    • Method Detail

      • send

        public void send​(@Nullable
                         T message)
        Sends the specified message to the Flutter application on this channel.
        Parameters:
        message - the message, possibly null.
      • send

        @UiThread
        public void send​(@Nullable
                         T message,
                         @Nullable
                         BasicMessageChannel.Reply<T> callback)
        Sends the specified message to the Flutter application, optionally expecting a reply.

        Any uncaught exception thrown by the reply callback will be caught and logged.

        Parameters:
        message - the message, possibly null.
        callback - a BasicMessageChannel.Reply callback, possibly null.
      • setMessageHandler

        @UiThread
        public void setMessageHandler​(@Nullable
                                      BasicMessageChannel.MessageHandler<T> handler)
        Registers a message handler on this channel for receiving messages sent from the Flutter application.

        Overrides any existing handler registration for (the name of) this channel.

        If no handler has been registered, any incoming message on this channel will be handled silently by sending a null reply.

        Parameters:
        handler - a BasicMessageChannel.MessageHandler, or null to deregister.
      • resizeChannelBuffer

        public void resizeChannelBuffer​(int newSize)
        Adjusts the number of messages that will get buffered when sending messages to channels that aren't fully set up yet. For example, the engine isn't running yet or the channel's message handler isn't set up on the Dart side yet.