Szukaj…


Zapisywanie danych przy przycinaniu pamięci

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);
    }
}

Wyjaśnienie

Co się tu dzieje?

System Android zawsze będzie dążył do wyczyszczenia jak największej ilości pamięci. Tak więc, jeśli twoja aktywność jest w tle, a inna aktywność na pierwszym planie wymaga jej udziału, system Android wywoła onTrimMemory() na twojej aktywności.

Ale to nie znaczy, że wszystkie twoje nieruchomości powinny zniknąć. Co należy zrobić, to zapisać je w obiekcie pakietu. Obiekty pakietu są znacznie lepiej obsługiwane pod względem pamięci. W pakiecie każdy obiekt jest identyfikowany przez unikalną sekwencję tekstową - w powyższym przykładzie zmienna wartości całkowitej mArg jest mArg pod nazwą referencyjną EXAMPLE_ARG . A po odtworzeniu działania wyodrębnij stare wartości z obiektu pakietu zamiast odtwarzać je od nowa



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow