Ну, как правило, обработчик onCreate
вашего экрана результатов определенно является хорошим местом для этого. Однако, читая между строк вашего вопроса, я заметил, по крайней мере, две вещи, которые могут вызвать проблемы:
Во-первых, использование статического объекта для переноса значений из одного действия в другое, безусловно, является неправильным подходом. Это потому, что, во-первых, в Android уже есть четко определенный механизм обмена данными между контекстами, и это через Связки и Intents . Итак, чтобы рассказать вашему результату активности о том, что ищет ваш пользователь, сделайте что-то вроде этого:
Intent mainIntent = new Intent(SearchVenueResults.this, SearchResults.class);
mainIntent.putExtra("search_query", getValueFromSearchBox());
startActivity(mainIntent);
В вашей активности SearchResults сделайте это в onCreate:
public void onCreate(Bundle savedInstanceState) {
String searchQuery = getIntent().getExtras().getStringExtra("search_query");
loadDataAndSetupUI(searchQuery);
super.onCreate(savedInstanceState);
}
Более того, Android ведет себя довольно непредсказуемо в отношении времени жизни статических переменных. Я несколько раз замечал, что поддержание статической переменной в классе действия не гарантирует, что эта переменная все еще действительна при запуске нового действия, поэтому вы никогда не должны полагаться на статику как средство обмена данными между классами.
Во-вторых, вы определенно не хотите реализовывать loadDataAndSetupUI
для синхронной работы. Это блокирует ваш пользовательский интерфейс до тех пор, пока поиск не прекратится, и Android может даже решить убить ваше приложение. Вместо этого используйте AsyncTask для фоновых заданий.