예제 #1
0
  protected void search() {
    // nag about no connectivity
    if (!AndroidUtils.isNetworkConnected(getSherlockActivity())) {
      Toast.makeText(getSherlockActivity(), R.string.offline, Toast.LENGTH_LONG).show();
      return;
    }

    String query = mSearchBox.getText().toString().trim();
    if (query.length() == 0) {
      return;
    }
    if (mSearchTask == null || mSearchTask.getStatus() == AsyncTask.Status.FINISHED) {
      mSearchTask = new SearchTask(getActivity());
      AndroidUtils.executeAsyncTask(mSearchTask, query);
    }
  }
  void executeSearchTask(String query) {
    if (DEBUG) Log.d(TAG, "sendQuery()");
    mSearchHolder.query = query;
    // not going through set* because we don't want to notify search result
    // observers.
    mSearchHolder.results = null;

    // If a task is already running, don't start a new one.
    if (mSearchTask != null && mSearchTask.getStatus() != AsyncTask.Status.FINISHED) {
      if (DEBUG) Log.d(TAG, "Query already running attempting to cancel: " + mSearchTask);
      if (!mSearchTask.cancel(true) && !mSearchTask.isCancelled()) {
        if (DEBUG) Log.d(TAG, "Unable to cancel search? Notifying the user.");
        Toast.makeText(
            this, getString(R.string.search_already_in_progress_toast), Toast.LENGTH_SHORT);
        return;
      }
    }
    mSearchTask = (SearchTask) new SearchTask().execute();
  }