الحالة في ميزة "إنشاء"
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
تعرَّف على كيفية إنشاء الحالة وإدارتها في تطبيقك المستنِد إلى Compose وكيفية
ضبط واجهة المستخدم للتفاعل مع التغييرات في الحالة. اطّلِع على كيفية إنشاء حالات
قابلة للتتبّع، وكيفية الاحتفاظ بالحالة في عمليات إعادة التركيب أو تغييرات الإعدادات، و
كيفية تنظيم العناصر القابلة للتجميع لتسهيل تدفق البيانات على النحو الأمثل.
النقاط الرئيسية
- إذا كانت حالة تطبيقك داخلية في عنصر قابل للتجميع، استخدِم
remember
للحفاظ على
الحالة أثناء إعادة التركيب.
- استخدِم
rememberSaveable
للحفاظ على الحالة في جميع
تغييرات الإعدادات.
- نقل القيمة هو نمط برمجي يتم من خلاله نقل القيمة إلى
المُستخدِم الذي يُطلِق العنصر القابل للتجميع. استخدِم رفع الحالة كلما أمكن ذلك لجعل العبارة
المركّبة أكثر قابلية لإعادة الاستخدام والاختبار.
- استخدِم فئة
ViewModel
للاحتفاظ بحالة معروضة في عنصر احتفاظ
بالحالة قابل للرصد، ما يؤدي إلى تجميع الحالة بشكل أفضل وإنشاء مصدر واحد
للبيانات في واجهة المستخدم.
المراجع
المجموعات التي تتضمّن هذا الدليل
هذا الدليل هو جزء من مجموعات الأدلة السريعة المنظَّمة التي تتناول
أهداف تطوير Android الأوسع نطاقًا:
أساسيات إنشاء المحتوى (مجموعة فيديوهات)
تعرِض سلسلة الفيديوهات هذه واجهات برمجة التطبيقات المختلفة لتطبيق Compose،
وتوضّح لك بسرعة الميزات المتاحة وكيفية استخدامها.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# State in Compose\n\n\u003cbr /\u003e\n\nLearn how to establish and manage state in your Compose-based app and how\nto configure the UI to react to changes in state. See how to create observable\nstates, how to retain state across recompositions or configuration changes, and\nhow to structure your composables for optimal data flow. \n\nKey points\n----------\n\n- If your app's state is internal to a composable, use [`remember`](/reference/kotlin/androidx/compose/runtime/package-summary#remember(kotlin.Function0)) to persist the state across re-composition.\n- Use [`rememberSaveable`](/reference/kotlin/androidx/compose/runtime/saveable/package-summary#rememberSaveable(kotlin.Array,androidx.compose.runtime.saveable.Saver,kotlin.String,kotlin.Function0)) to persist the state across configuration changes.\n- *State hoisting* is a programming pattern where you move the state to the caller of a composable. Where possible, use state hoisting to make the composable more reusable and testable.\n- Use the [`ViewModel`](/reference/androidx/lifecycle/ViewModel) class to hold an exposed state in an observable state holder, better encapsulating the state and creating a single source of truth for the UI.\n\nResources\n---------\n\n- [Codelab: State in Jetpack Compose](/codelabs/jetpack-compose-state#0)\n\nCollections that contain this guide\n-----------------------------------\n\nThis guide is part of these curated Quick Guide collections that cover\nbroader Android development goals: \n\n### Compose basics (video collection)\n\nThis series of videos introduces various Compose APIs, quickly showing you what's available and how to use them. \n[Quick guide collection](/develop/ui/compose/quick-guides/collections/compose-basics) \n\nHave questions or feedback\n--------------------------\n\nGo to our frequently asked questions page and learn about quick guides or reach out and let us know your thoughts. \n[Go to FAQ](/quick-guides/faq) [Leave feedback](https://issuetracker.google.com/issues/new?component=1573691&template=1993320)"]]