Поиск…


Сохранение данных об обрезке

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, а не воссоздавайте их с нуля



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow