code: @InterfaceAudience.Public
      public void stop() {
  
          if (runningState.get() == false) {
              Log.d(Log.TAG_QUERY, "%s: stop() called, but runningState is already false.  Ignoring.", this);
              return;
          } else {
              Log.d(Log.TAG_QUERY, "%s: stop() called", this);
              runningState.set(false);
          }
  
          if (observing) {
              observing = false;
              getDatabase().removeChangeListener(this);
          }
  
          // slight diversion from iOS version -- cancel the queryFuture
          // regardless of the willUpdate value, since there can be an update in flight
          // with willUpdate set to false.  was needed to make testLiveQueryStop() unit test pass.
          if (queryFuture != null) {
              boolean cancelled = queryFuture.cancel(true);
              Log.v(Log.TAG_QUERY, "%s: cancelled queryFuture %s, returned: %s", this, queryFuture, cancelled);
          }
  
          if (rerunUpdateFuture != null) {
              boolean cancelled = rerunUpdateFuture.cancel(true);
              Log.d(Log.TAG_QUERY, "%s: cancelled rerunUpdateFuture %s, returned: %s", this, rerunUpdateFuture, cancelled);
          }
  
      }
docs: Stops observing database changes. Calling start() or rows() will restart it.