Ответ 1
Такое поведение совершенно и требует.
Система может решить остановить Activities
, которые находятся в фоновом режиме для освобождения некоторой памяти.
То же самое происходит, когда, например, вращение устройства.
Обычно вы сохраняете свое состояние экземпляра (например, введенный текст и прочее) в связку и извлекаете эти значения из пакета при воссоздании Activity
.
Вот некоторый стандартный код, который я использую:
private EditText mSomeUserInput;
private int mSomeExampleField;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// TODO inflate layout and stuff
mSomeUserInput = (EditText) findViewById(R.id.some_view_id);
if (savedInstanceState == null) {
// TODO instanciate default values
mSomeExampleField = 42;
} else {
// TODO read instance state from savedInstanceState
// and set values to views and private fields
mSomeUserInput.setText(savedInstanceState.getString("mSomeUserInput"));
mSomeExampleField = savedInstanceState.getInt("mSomeExampleField");
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// TODO save your instance to outState
outState.putString("mSomeUserInput", mSomeUserInput.getText().toString());
outState.putInt("mSomeExampleField", mSomeExampleField);
}