تكرار السؤال: …
الإجابة المختصرة
تمر بست مراحل رئيسية: onCreate و onStart و onResume و onPause و onStop و onDestroy، وتكون مرئية وتفاعلية في onResume.
الشرح
يتم إنشاء الـ View وربط البيانات في onCreate. تنتقل الـ Activity إلى onStart عندما تصبح مرئية للمستخدم ولكن دون تفاعل كامل. عند وصولها إلى onResume تكون في قمة الـ Backstack وجاهزة للتفاعل. عندما تفقد الـ Activity موقع المقدمة (مثل فتح Activity أخرى أو Activity شفافة فوقها، أو ظهور حوار نظام كطلب صلاحية، أو في وضع multi-window) تنتقل إلى onPause. أما AlertDialog أو DialogFragment داخل نفس الـ Activity أو سحب لوحة الإشعارات فلا تستدعي onPause، ثم onStop عند حجبها كليًا، وأخيرًا onDestroy لتحرير الموارد أو عند استدعاء finish().
مثال بالكود
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
override fun onResume() {
super.onResume()
// استئناف تحديثات الموقع أو الكاميرا
}
override fun onPause() {
super.onPause()
// إيقاف العمليات الحساسة لتوفير البطارية
}
}أخطاء شائعة
- تنفيذ عمليات طويلة أو حجب الـ Main Thread داخل onPause مما يسبب ANR وبطء الانتقال للشاشة التالية.
- الاعتماد على onDestroy لحفظ بيانات المستخدم الحساسة، لأن النظام قد ينهي العملية مباشرة دون استدعائها عند نقص الذاكرة.