question: Callbacks tryGetCallbacks ( Callbacks oldCallbacks ) { synchronized ( mLock ) { if ( mStopped ) { return null ; } if ( mCallbacks == null ) { return null ; } final Callbacks callbacks = mCallbacks . get ( ) ; if ( callbacks != oldCallbacks ) { return null ; } if ( callbacks == null ) { Log . w ( TAG , "no mCallbacks" ) ; return null ; } return callbacks ; } }
target:  Gets the callbacks object.  If we've been stopped, or if the launcher object has somehow been garbage collected, return null instead.  Pass in the Callbacks object that was around when the deferred message was scheduled, and if there's a new Callbacks object around then also return null.  This will save us from calling onto it with data that will be ignored.