0Pricing
Android Academy · درس

الأنشطة ودورة الحياة

تعلّم ماهية Activity، وافهم استدعاءات دورة حياتها (onCreate وonStart وonResume وonPause وonStop وonDestroy)، واستخدم ViewBinding.

الأنشطة ودورة الحياة درس مجاني في Android Academy على CoddyKit. هذا هو الدرس 2 من أصل 7. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Android Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Android Academy 7 دروس في المجموع.

ما هو النشاط؟

النشاط هو شاشة واحدة في تطبيق Android الخاص بك.

  • كل شاشة (تسجيل الدخول، والصفحة الرئيسية، والإعدادات) هي نشاط
  • يدير تخطيطًا (XML) وتفاعلات المستخدم
  • يُصرّح عنه في AndroidManifest.xml

فكّر فيه على أنه النظير في Android لصفحة ويب — فكل صفحة هي نشاط.

دورة حياة النشاط

يمر النشاط بسلسلة من حالات دورة الحياة أثناء تنقل المستخدم في التطبيق:

  • مُنشأ → مُشغّل → مُستأنف (مرئي ونشط)
  • مُوقَف مؤقتًا (مخفي جزئيًا)
  • مُوقَف (مخفي تمامًا)
  • مُدمَّر (لم يعد النشاط موجودًا)

تتجاوز أساليب دورة الحياة للاستجابة لهذه الانتقالات.

استدعاءات دورة الحياة

استدعاءات دورة الحياة الرئيسية الستة:

  • onCreate() — يجري إنشاء النشاط. أعدّ تخطيطك هنا.
  • onStart() — يصبح النشاط مرئيًا.
  • onResume() — يكون النشاط في الواجهة ويمكن للمستخدم التفاعل معه.
  • onPause() — يغادر المستخدم. احفظ البيانات المؤقتة.
  • onStop() — لم يعد النشاط مرئيًا.
  • onDestroy() — يجري تدمير النشاط.

مثال على MainActivity

نشاط بسيط مع تسجيل دورة الحياة:

import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {

    private val TAG = "MainActivity"

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        Log.d(TAG, "onCreate")
    }

    override fun onResume() {
        super.onResume()
        Log.d(TAG, "onResume — user is here")
    }

    override fun onPause() {
        super.onPause()
        Log.d(TAG, "onPause — saving state")
    }

    override fun onDestroy() {
        super.onDestroy()
        Log.d(TAG, "onDestroy")
    }
}

لماذا تهم دورة الحياة؟

أخطاء شائعة تنتج عن تجاهل دورة الحياة:

  • تشغيل فيديو في onResume مع نسيان إيقافه مؤقتًا في onPause — يستنزف البطارية
  • تسجيل مستمع مستشعر في onCreate دون إلغاء تسجيله في onDestroy — يؤدي إلى تسرّب للذاكرة
  • عدم حفظ بيانات النموذج في onPause — يفقد المستخدم تقدمه عند تلقي مكالمة هاتفية

حفظ الحالة: onSaveInstanceState

عندما يدير المستخدم الهاتف، يتم تدمير النشاط وإعادة إنشائه. وتُفقد حالة واجهة المستخدم.

احفظ الحالة المؤقتة في onSaveInstanceState(bundle) واستعدها في onCreate(savedInstanceState).

حفظ الحالة واستعادتها

احتفظ بالبيانات عبر تغييرات الإعدادات:

class CounterActivity : AppCompatActivity() {

    private var count = 0

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_counter)

        // Restore saved state after rotation
        count = savedInstanceState?.getInt("count") ?: 0
    }

    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        outState.putInt("count", count)
    }
}

مكدس الرجوع

يدير Android مكدس رجوع للأنشطة:

  • يؤدي تشغيل نشاط جديد إلى دفعه إلى المكدس
  • يؤدي الضغط على زر الرجوع إلى إزالة النشاط العلوي من المكدس وتدميره
  • يُستأنف النشاط السابق تلقائيًا

لهذا السبب، لا ينبغي استدعاء finish() يدويًا إلا إذا أردت تحديدًا إزالة الشاشة الحالية من مكدس الرجوع.

تغييرات الإعدادات

يؤدي أي تغيير في الإعدادات (التدوير أو تغيير اللغة أو توصيل لوحة المفاتيح) إلى إعادة إنشاء النشاط تلقائيًا.

الحل الحديث هو استخدام ViewModel — فهو يظل موجودًا عبر تغييرات الإعدادات ويحتفظ ببياناتك بأمان. ستتعلم ViewModel في وحدة البنية المعمارية.

تحقق سريع

في أي أسلوب من أساليب دورة الحياة ينبغي إعداد التخطيط (استدعاء setContentView)؟

مراجعة: الأنشطة ودورة الحياة

أصبحت الآن تفهم أنشطة Android:

  • النشاط = شاشة واحدة في تطبيقك
  • دورة الحياة: onCreate → onStart → onResume → onPause → onStop → onDestroy
  • احفظ الحالة المؤقتة في onSaveInstanceState
  • يؤدي التدوير إلى تدمير النشاط وإعادة إنشائه
  • يدير Android مكدس الرجوع تلقائيًا

التالي: تصميم الشاشات باستخدام التخطيطات وعناصر العرض.

الأسئلة الشائعة

هل درس «الأنشطة ودورة الحياة» مجاني؟

نعم — نص درس «الأنشطة ودورة الحياة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Android Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Android Academy 7 دروس في المجموع.

ماذا ستتعلم في «الأنشطة ودورة الحياة»؟

تعلّم ماهية Activity، وافهم استدعاءات دورة حياتها (onCreate وonStart وonResume وonPause وonStop وonDestroy)، واستخدم ViewBinding. تتمرن على Android Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Android Academy؟

لا تُشترط خبرة سابقة. Android Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 7.

كم من الوقت يستغرق درس «الأنشطة ودورة الحياة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Android Academy هذا؟

نعم. كل درس في Android Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. بنية المشروع وملف البيان
  2. الأنشطة ودورة الحياة
  3. التخطيطات وطرق العرض
  4. معالجة إدخال المستخدم
  5. النوايا والتنقّل
  6. الأجزاء
  7. الأذونات وطلبات وقت التشغيل
← العودة إلى Android Academy