Android убивает мое приложение всякий раз, когда вызывается startactivityForresult

StackOverflow https://stackoverflow.com/questions/8988946

Вопрос

Ну в моей приложении я использую камеру по умолчанию и галерею Android с StartactivityForresult AS;

Intent i = new Intent("android.intent.action.PICK",
                       MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
i.setType("image/*");
startActivityForResult(i, this.SELECT_PICTURE);
.

Я могу поймать оноксизм, а также. Однако, если память низкая, и я начинаю эту деятельность, я испытал, что система убивает мою родительскую активность, и даже если активность возвращается со значением, я потерял все мои локальные переменные (и oncreate () снова вызывается). Только снова onreusume () снова должен вызывать.

Я несколько раз пытался, я уверен, что это связано с проблемой памяти. Если достаточно, процесс памяти успешно выполнен. Как я могу предотвратить это поведение?

Поскольку Android не убивает приложение на переднем плане, я могу еще использовать эту функцию? Я думаю, что моя проблема почти похожа на Эта .


Решение

В дополнение к решению, предоставленному Yahel , использование следующих методов может работать.

@Override
public void onSaveInstanceState(Bundle savedInstanceState){
   super.onSaveInstanceState(savedInstanceState);
}

@Override
public void onRestoreInstanceState(Bundle savedInstanceState){
   super.onRestoreInstanceState(savedInstanceState);
}
.

Это было полезно?

Решение

Вам нужен хороший просмотр артикул AND-READ-FOW-CODE: http://developer.Android.com/Reference/android/app/activity.html#activityLifecycleccle

Вы активируйте и будут убиты Android, если память низкая.Но это будет уведомлено, и есть очень четкий способ борьбы с этим.

Это причина существования генеракодицетагкода во все ваши действия OnCreate: Bundle savedInstanceState

Во время окна вашего приложения вы должны сохранить все, что вам нужно воссоздать состояние вашего приложения, и во время Oncreate вашего приложения вы должны проверить, вернусь ли вы с полной SavedInStanceState и восстановите ваше приложение оттуда.

Удачи.

Другие советы

Вы учитывались с помощью некоторого типа постоянного хранения?Сохраните данные, которые вам нужно сохранить в постоянном хранении (общие настройки, DB, файловую систему и т. Д.) Перед тем, как позвонить в новую целью, с какой-то флагом реконструкции.Затем, если активность вызывает ONCREATE, и флаг активируется, вы можете восстановить предыдущее состояние активности.Обязательно очистить флаг реконструкции, когда его не нужно, что должно быть в Onreume.

Редактировать:

OnsaveInstanceState, кажется, как для данных локальных к активности.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top