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;
  }
}

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 ; } }
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 .
