Можно ли воссоздать активность в onRestart ()? - PullRequest
3 голосов
/ 12 марта 2011

У меня сложный TabActivity, который содержит ListViews и TextViews.Вместо того, чтобы возиться с ручным обновлением пользовательского интерфейса, я решил «воссоздать» активность (принудительно перерисовать) всякий раз, когда она выходит на передний план.Предположим, что я перехожу от действия A к B. При ударе по B действие A должно быть воссоздано.Вот код:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_search);
    setupTabs();
}

@Override
protected void onNewIntent(Intent intent) {
    startActivity(intent);
    finish();
}    

@Override
protected void onRestart() {
    super.onRestart();
    onNewIntent(getIntent());
}

Это работает, но мне интересно, если я делаю что-то не так, может быть, есть более элегантное решение.Не могли бы вы предложить лучшие практики для этого сценария?

1 Ответ

2 голосов
/ 12 марта 2011

но мне интересно, что я делаю что-то не так

Вы тратите время процессора и время работы от батареи.Вы ухудшаете пользовательский опыт, заставляя постоянно обновлять действие с нуля.

Не могли бы вы предложить лучшие практики для этого сценария?

Лучшие практики будутбыть для вас, чтобы выполнить «ручное обновление пользовательского интерфейса».Разделите ваш setupTabs() на две части: одну, которая действительно создает вкладки (называемые из onCreate()), и другую, которая заполняет данные в виджетах во вкладках (называемые из onResume()).

Тамможет быть, это больше подходит для вашего случая, но, поскольку вы решили не объяснять, что же такого сложного в «ручном обновлении пользовательского интерфейса», я не могу вам больше посоветовать.

...