تكرار السؤال: …
الإجابة المختصرة
remember تحتفظ بالحالة عبر دورات الـ Recomposition فقط، بينما rememberSaveable تحتفظ بها عبر دورات دوران الشاشة وموت العملية (Process Death).
الشرح
تخزن remember القيمة في شجرة الـ Composition وتفقد قيمتها عند إعادة إنشاء الـ Activity (مثل تدوير الجهاز). أما rememberSaveable فتستخدم آلية SavedInstanceState الداخلية لنظام أندرويد لحفظ القيم واسترجاعها تلقائيًا للأنواع الأولية أو للكائنات المخصصة باستخدام Saver مخصص أو Parcelize.
مثال بالكود
@Composable
fun SearchScreen() {
// تبقى القيمة محفوظة حتى بعد دوران الهاتف:
var text by rememberSaveable { mutableStateOf("") }
TextField(value = text, onValueChange = { text = it })
}أخطاء شائعة
- استخدام remember لحفظ مدخلات المستخدم في النماذج دون إدراك أنها ستضيع فور تدوير الهاتف.
- تمرير كائنات معقدة لا تطبق Parcelable أو ليس لها Saver مخصص إلى rememberSaveable مما يسبب كراش وقت التشغيل.