2013-03-21 2 views
4

У меня есть активность с большим количеством операций с фрагментами в нем, и иногда моим пользователям нужно открыть действие настроек на несколько секунд. Я делаю это вот так:Не вызывайте onDestroy() родительской активности после вызова startActivity()?

Intent preferencesIntent = new Intent(this, PreferencesView.class);  
this.startActivity(preferencesIntent); 

Каждый раз, когда я делаю это, вызывается onDestroy() моей основной деятельности. Поэтому, когда мой пользователь возвращается, основная активность находится на этом начальном этапе. Но я хотел бы, чтобы основная деятельность была такой, когда они ее оставили.

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

Итак, есть ли способ сказать Android не убивать мою главную деятельность, пока она не видна?

Спасибо заранее!

+0

использование startActivityForResult (намерение); в вашем случае, а не просто startActivity (намерение) –

+0

какое устройство вы используете? система не должна убивать вашу первую активность, если у нее очень мало ОЗУ – FoamyGuy

+0

@FoamyGuy Я использую Nexus 7. У этого есть 1Gb RAM, и у меня почти нет приложения, открытого. – NLemay

ответ

2

Вы уже писали ответ: сохранить/восстановить состояние. Так работает андроид.

В вашей деятельности может быть уничтожено изменение конфигурации или что-то еще.

+0

Если у меня нет выбора, я сделаю это. Но, похоже, это много неприятностей только для одного действительно конкретного случая. Более того, перезагрузка всех моих данных может занять несколько секунд. Мне не нравится пользовательский интерфейс, который он предоставляет моим пользователям. – NLemay

+1

вы можете хранить все свои большие данные в фрагменте без вида, используйте setRetainInstance(). это сохранит экземпляр фрагмента при изменении конфигурации. Это может выглядеть немного сложнее, однако, как только вы знаете, как это сделать, вы сделаете это автоматически. –

1

Вы не можете запретить Android прекратить действие. Единственный способ, который я вижу, - загрузить предпочтения в Фрагменте в основной Деятельности.

+0

Проблема в том, что я также использую вкладки, и нужно всегда выбирать одну вкладку. Предпочтения не будут вписываться ни в какие мои вкладки, поэтому это создаст странную навигацию. – NLemay