Причина, по которой onCreate() вызывается снова, не всегда связана с тем, что на вашем устройстве недостаточно памяти. Одной из наиболее распространенных причин является изменение ориентации, которое вызывает воссоздание активности, поэтому вы можете попробовать поместить это в свой файл манифеста:
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden|screenSize"
однако, если вы достаточно поэкспериментировали со своим кодом и пришли к выводу, что это вызвано тем, что андроид уничтожает активность из-за нехватки памяти, то вот обходной путь, который вы можете использовать для правильного восстановления своей активности.
YourObject mObject;
.
.
.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mObject.setImageUri(bla..); //Store image Uri and other values in mObject
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
if (mObject != null) {
//save your object which contains data like image uri
savedInstanceState.putSerializable(KEY, mObject);
}
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
YourObject obj = (YourObject) savedInstanceState.getSerializable(KEY);
if(obj != null)
mObject = obj;
}
и, наконец, в onResume прочитайте сохраненные данные обратно из mObject, если они не нулевые.
@Override
protected void onResume() {
super.onResume();
if(mObject != null) {
//set image to imageView using the stored Uri
setImage(imageView, mObject.getImageUri());
}
}
Последовательность:
OnResume
OnPause
OnSaveInstanceState - Here we save our data in bundle
OnDestroy - Here we lose all our activity data
OnCreate
onRestoreInstanceState - Here we restore our saved data from bundle if any
OnResume - Here we deal with restored data if any
person
Obaidah
schedule
08.06.2015