Android
Жизненный цикл пользовательского интерфейса
Поиск…
Сохранение данных об обрезке
public class ExampleActivity extends Activity {
private final static String EXAMPLE_ARG = "example_arg";
private int mArg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_example);
if(savedInstanceState != null) {
mArg = savedInstanceState.getInt(EXAMPLE_ARG);
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(EXAMPLE_ARG, mArg);
}
}
объяснение
Итак, что здесь происходит?
Система Android всегда будет пытаться очистить как можно больше памяти. Итак, если ваша деятельность не соответствует фону, а другая деятельность переднего плана требует своей доли, система Android будет вызывать onTrimMemory()
для вашей активности.
Но это не означает, что все ваши свойства должны исчезнуть. Что вы должны сделать, так это сохранить их в объект Bundle. Объект Bundle намного лучше обрабатывает память. Внутри пакета каждый объект идентифицируется уникальной текстовой последовательностью - в приведенном выше примере целочисленная переменная значения mArg
выполняется под ссылочным именем EXAMPLE_ARG
. И когда активность воссоздается, извлеките старые значения из объекта Bundle, а не воссоздавайте их с нуля