AsyncTask: onPostExecute запускается дважды?

Я запускаю async-задачу для загрузки результатов с сервера. Я использую SearchView для передачи запроса. Затем, используя мой собственный API для извлечения данных. Я смущен тем, почему AsyncTask выводит данные дважды.

mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(final String query) { linearLayout.removeAllViews(); new Search(query, linearLayout).execute(); return false; } @Override public boolean onQueryTextChange(String newText) { linearLayout.removeAllViews(); return false; } }); private class Search extends AsyncTask<Void, Void, ArrayList<Business>> { String query; LinearLayout linearLayout; public Search(String query, LinearLayout linearLayout) { this.query = query; this.linearLayout = linearLayout; } @Override protected ArrayList<Business> doInBackground(Void... params) { YelpApi yelpApi = new YelpApi(getString(R.string.yelp_consumer_key), getString(R.string.yelp_consumer_secret), getString(R.string.yelp_token), getString(R.string.yelp_token_secret)); HashMap<String, String> parameters = new HashMap<>(); parameters.put("term", query); parameters.put("sort", "2"); parameters.put("limit", "5"); return yelpApi.searchLocation("North Hills, CA", parameters); } @Override protected void onPostExecute(ArrayList<Business> businesses) { for (int i = 0; i < businesses.size(); i++) { TextView mTextView = new TextView(getApplicationContext()); mTextView.setText(businesses.get(i).getName()); mTextView.setTextColor(Color.BLACK); linearLayout.addView(mTextView); } } } 

Однако, когда я запускаю поиск, отображаются два экземпляра данных. Я не могу понять, что я делаю неправильно.

Измените свой список поиска запросов на что-то вроде этого

  mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(final String query) { linearLayout.removeAllViews(); new Search(query, linearLayout).execute(); return true; } @Override public boolean onQueryTextChange(String newText) { linearLayout.removeAllViews(); return false; } }); 

Надеюсь, что это сработает