Khi thiếu RAM, hệ điều hành kill process của app đang nằm nền (process death). Khác với người dùng tự tắt app, lúc quay lại Android dựng lại đúng màn hình cũ (iOS vẫn hiện snapshot màn hình cũ trong app switcher) nên người dùng kỳ vọng app tự khôi phục — nếu không, người dùng thấy form trống hoặc bị đẩy về màn hình đầu.
Cách xử lý chung: lưu lượng state tối thiểu đủ để dựng lại màn hình (ID, text đang nhập, tab đang chọn), còn dữ liệu lớn thì tải lại từ database/API.
- Flutter: bật state restoration bằng
restorationScopeIdtrênMaterialApp, rồi dùngRestorationMixinvới cácRestorableProperty:
class _FormState extends State<CheckoutForm> with RestorationMixin {
final _note = RestorableTextEditingController();
@override
String get restorationId => 'checkout_form';
@override
void restoreState(RestorationBucket? oldBucket, bool initialRestore) {
registerForRestoration(_note, 'note'); // restored after process death
}
}Điều hướng cũng cần Navigator.restorablePush để khôi phục được stack màn hình.
- Android native: ViewModel chỉ sống qua configuration change, không sống qua process death → dùng SavedStateHandle / rememberSaveable.
- React Native: lưu navigation state và bản nháp form vào storage, đọc lại khi khởi động.
Cách tái hiện để test: bật "Don't keep activities" trong Developer options, hoặc đưa app vào nền rồi chạy adb shell am kill <package>.
Lưu ý: saved state bị giới hạn kích thước và serialize trên main thread — đừng nhét danh sách hay bitmap vào đó.