Class ShadowLegacyMessage


  • @Implements(value=android.os.Message.class,
                isInAndroidSdk=false)
    public class ShadowLegacyMessage
    extends ShadowMessage
    The shadow Message for LooperMode.Mode.LEGACY.

    In LooperMode.Mode.LEGACY, each Message is associated with a Runnable posted to the Scheduler.

    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      android.os.Message getNext()
      Convenience method to provide getter access to the private field Message.next.
      protected boolean isInUse()
      Convenience method to provide access to the private Message.isInUse() method.
      protected void recycle()
      Hook to unscheduled the callback when the message is recycled.
      void recycleUnchecked()
      Hook to unscheduled the callback when the message is recycled.
      void setNext​(android.os.Message next)
      Convenience method to provide setter access to the private field Message.next.
      void setScheduledRunnable​(java.lang.Runnable r)
      Stores the Runnable instance that has been scheduled to invoke this message.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ShadowLegacyMessage

        public ShadowLegacyMessage()
    • Method Detail

      • recycleUnchecked

        @HiddenApi
        @Implementation(minSdk=21)
        public void recycleUnchecked()
        Hook to unscheduled the callback when the message is recycled. Invokes unschedule() and then calls through to the package private method Message.recycleUnchecked() on the real object.
        Specified by:
        recycleUnchecked in class ShadowMessage
      • recycle

        @Implementation(maxSdk=20)
        protected void recycle()
        Hook to unscheduled the callback when the message is recycled. Invokes unschedule() and then calls through to Message.recycle() on the real object.
      • setScheduledRunnable

        public void setScheduledRunnable​(java.lang.Runnable r)
        Description copied from class: ShadowMessage
        Stores the Runnable instance that has been scheduled to invoke this message. This is called when the message is enqueued by ShadowLegacyMessageQueue.enqueueMessage(android.os.Message, long) and is used when the message is recycled to ensure that the correct Runnable instance is removed from the associated scheduler.
        Specified by:
        setScheduledRunnable in class ShadowMessage
        Parameters:
        r - the Runnable instance that is scheduled to trigger this message.

        #if ($api >= 21) * @see #recycleUnchecked() #else * @see #recycle() #end

        Only supported in LooperMode.Mode.LEGACY.

      • isInUse

        @Implementation
        protected boolean isInUse()
        Convenience method to provide access to the private Message.isInUse() method. Note that the definition of "in use" changed with API 21:

        In API 19, a message was only considered "in use" during its dispatch. In API 21, the message is considered "in use" from the time it is enqueued until the time that it is freshly obtained via a call to Message.obtain(). This means that in API 21 messages that are in the recycled pool will still be marked as "in use".

        Returns:
        true if the message is currently "in use", false otherwise.
      • getNext

        public android.os.Message getNext()
        Description copied from class: ShadowMessage
        Convenience method to provide getter access to the private field Message.next.

        Only supported in LooperMode.Mode.LEGACY

        Specified by:
        getNext in class ShadowMessage
        Returns:
        The next message in the current message chain.
        See Also:
        ShadowMessage.setNext(Message)
      • setNext

        public void setNext​(android.os.Message next)
        Description copied from class: ShadowMessage
        Convenience method to provide setter access to the private field Message.next.

        Only supported in LooperMode.Mode.LEGACY

        Specified by:
        setNext in class ShadowMessage
        Parameters:
        next - the new next message for the current message.
        See Also:
        ShadowMessage.getNext()