code: public void onSearchBoxTextChanged(String searchText, boolean forceReloadEventIfSameText) {
          if (!forceReloadEventIfSameText && Utility.stringsEqualOrEmpty(this.searchText, searchText)) {
              return;
          }
  
          if (TextUtils.isEmpty(searchText)) {
              searchText = null;
          }
          this.searchText = searchText;
  
          // If search text is being set in response to user input, it is wasteful to send a new request
          // with every keystroke. Send a request the first time the search text is set, then set up a 2-second timer
          // and send whatever changes the user has made since then. (If nothing has changed
          // in 2 seconds, we reset so the next change will cause an immediate re-query.)
          hasSearchTextChangedSinceLastQuery = true;
          if (searchTextTimer == null) {
              searchTextTimer = createSearchTextTimer();
          }
      }
docs: Sets the search text and reloads the data in the control. This is used to provide search-box
  functionality where the user may be typing or editing text rapidly. It uses a timer to avoid repeated
  requerying, preferring to wait until the user pauses typing to refresh the data. Note that this
  method will NOT update the text in the search box, if any, as it is intended to be called as a result
  of changes to the search box (and is public to enable applications to provide their own search box
  UI instead of the default one).
  
  @param searchText                 the search text
  @param forceReloadEventIfSameText if true, will reload even if the search text has not changed; if false,
  identical search text will not force a reload