نقل بيانات تنفيذ شاشة البداية إلى نظام التشغيل Android 12 والإصدارات الأحدث

في حال تنفيذ شاشة بداية مخصّصة في الإصدار 11 من نظام Android أو الإصدارات الأقدم، عليك نقل التطبيق إلى واجهة برمجة تطبيقات SplashScreen للمساعدة التأكّد من عرضه بشكل صحيح في نظام التشغيل Android 12 والإصدارات الأحدث

بدءًا من الإصدار 12 من Android، يطبّق النظام إعدادات البداية التلقائية لنظام Android. الشاشة مفعَّلة بارد ودافئ لجميع التطبيقات. بشكل افتراضي، يتم إنشاء شاشة البداية لهذا النظام باستخدام عنصر رمز مشغّل تطبيقك وwindowBackground من والمظهر، إذا كان لونًا واحدًا.

في حال عدم نقل بيانات تطبيقك، لن تحتاج إلى تجربة إطلاق التطبيق على نظام التشغيل Android 12 قد تنخفض أو يكون لها نتائج غير مقصودة.

  • إذا تم تنفيذ شاشة البداية الحالية باستخدام مظهر مخصَّص يلغي android:windowBackground، يستبدل النظام شاشة البداية المخصّصة بنظام Android تلقائي. شاشة البداية في نظام التشغيل Android 12 والإصدارات الأحدث قد لا يكون هذا المحتوى هو المقصود من تطبيقك. المستخدم.

  • إذا تم تنفيذ شاشة البداية الحالية باستخدام Activity مخصَّص ويؤدي إطلاق تطبيقك على الأجهزة التي تعمل بنظام التشغيل Android 12 أو الإصدارات الأحدث إلى شاشات البداية المكررة: شاشة البداية الخاصة بالنظام ثم نشاطك الحالي على شاشة البداية

يمكنك منع هذه التجارب المتراجعة أو غير المقصودة من خلال إكمال عملية النقل الموضحة في هذا المستند. بعد نقل البيانات، تعمل واجهة برمجة التطبيقات في تحسين وقت بدء التشغيل ومنحك إمكانية التحكم الكامل في تجربة شاشة البداية وينشئ تجربة إطلاق أكثر اتساقًا مع التطبيقات الأخرى على النظام الأساسي.

مكتبة البرامج المتوافقة لـ SplashScreen

يمكنك استخدام واجهة برمجة التطبيقات SplashScreen مباشرةً، ولكننا ننصحك بشدة باستخدام مكتبة متوافقة مع Androidx SplashScreen بدلاً من ذلك. تستخدم مكتبة التوافق مع واجهة برمجة تطبيقات SplashScreen، التوافق مع الأنظمة القديمة، وينشئ شاشة بداية متسقة شكلاً ومضمونًا العرض عبر جميع إصدارات Android. تمت كتابة هذا المستند باستخدام دالة التوافق المكتبة.

في حال نقل البيانات باستخدام واجهة برمجة التطبيقات SplashScreen مباشرةً على نظام التشغيل Android 11 والإصدارات الأقدم تظهر شاشة البداية كما كانت قبل نقل البيانات البدء في في نظام Android 12، تمتاز شاشة البداية بمظهر وأسلوب Android 12.

في حال نقل البيانات باستخدام مكتبة الأجهزة المتوافقة SplashScreen، سيعرض النظام شاشة البداية نفسها في جميع إصدارات Android

نقل بيانات تنفيذ شاشة البداية

أكمِل الخطوات التالية لنقل شاشة البداية الحالية. الرئيسية في نظام التشغيل Android 12 والإصدارات الأحدث.

ينطبق هذا الإجراء على أي نوع من عمليات التنفيذ تريد نقله. منهم. إذا كنت تنقل البيانات من حساب Activity مخصّص، اتّبِع الخطوات التالية الممارسات الموضحة في هذا المستند لتكييف شاشة البداية المخصّصة Activity تساعد واجهة برمجة التطبيقات SplashScreen API أيضًا على تقليل بدء التشغيل وقت الاستجابة المتوفّر مع نشاط شاشة البداية المخصّص

لنقل شاشة البداية، اتّبِع الخطوات التالية:

  1. في ملف build.gradle، تغيير compileSdkVersion وتضمين مكتبة متوافقة SplashScreen في التبعيات.

    build.gradle
    
    android {
       compileSdkVersion 31
       ...
    }
    dependencies {
       ...
       implementation 'androidx.core:core-splashscreen:1.0.0-beta02'
    }
    
  2. إنشاء مظهر باستخدام أحد الوالدَين لـ Theme.SplashScreen اضبط قيمة postSplashScreenTheme إلى المظهر الذي يجب أن يستخدمه Activity قيمة windowSplashScreenAnimatedIcon إلى عنصر قابل للرسم أو صورة متحركة القابل للرسم. السمات الأخرى اختيارية.

    <style name="Theme.App.Starting" parent="Theme.SplashScreen">
       <!-- Set the splash screen background, animated icon, and animation
       duration. -->
       <item name="windowSplashScreenBackground">@color/...</item>
    
       <!-- Use windowSplashScreenAnimatedIcon to add a drawable or an animated
            drawable. One of these is required. -->
       <item name="windowSplashScreenAnimatedIcon">@drawable/...</item>
       <!-- Required for animated icons. -->
       <item name="windowSplashScreenAnimationDuration">200</item>
    
       <!-- Set the theme of the Activity that directly follows your splash
       screen. This is required. -->
       <item name="postSplashScreenTheme">@style/Theme.App</item>
    </style>
    

    إذا كنت تريد إضافة لون خلفية أسفل الأيقونة، يمكنك استخدام Theme.SplashScreen.IconBackground المظهر وضبط السمة windowSplashScreenIconBackground.

  3. في البيان، استبدل موضوع نشاط البدء بالموضوع الذي إنشائها في الخطوة السابقة.

    <manifest>
       <application android:theme="@style/Theme.App.Starting">
        <!-- or -->
            <activity android:theme="@style/Theme.App.Starting">
    ...
    
  4. عليك الاتصال بالرقم installSplashScreen في نشاط البداية قبل إجراء المكالمة. super.onCreate()

    Kotlin

    class MainActivity : Activity() {
    
       override fun onCreate(savedInstanceState: Bundle?) {
           // Handle the splash screen transition.
           val splashScreen = installSplashScreen()
    
           super.onCreate(savedInstanceState)
           setContentView(R.layout.main_activity)
    ...
    

    Java

    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
             // Handle the splash screen transition.
             SplashScreen splashScreen = SplashScreen.installSplashScreen(this);
    
             super.onCreate(savedInstanceState);
             setContentView(R.layout.main_activity);
        }
    }
    

تعرض installSplashScreen عنصر شاشة البداية، الذي يمكنك اختياره استخدامها لتخصيص الصورة المتحركة أو إبقاء شاشة البداية على الشاشة لفترة أطول المدة. للحصول على مزيد من التفاصيل حول تخصيص الرسوم المتحركة، يمكنك الاطّلاع على إبقاء شاشة البداية على الشاشة لفترات أطول أو خصِّص الصورة المتحركة لإغلاق شاشة البداية.

اضبط "نشاط شاشة البداية" المخصّص لك على شاشة البداية.

بعد نقل البيانات إلى شاشة البداية في الإصدار 12 من نظام Android والإصدارات الأحدث، حدِّد الجوانب إلى شاشة البداية المخصّصة السابقة Activity لديك ما يلي: الخيارات:

  • الاحتفاظ بالنشاط المخصص مع منع عرضه.
  • احتفظ بالنشاط المخصص لأغراض متعلقة بالعلامة التجارية.
  • أزِل النشاط المخصّص وعدِّل تطبيقك حسب الحاجة.

منع عرض النشاط المخصّص

إذا كانت شاشة البداية السابقة Activity مُستخدَمة بشكل أساسي لتوجيه التوجيه، يُرجى اتّباع الخطوات التالية: التفكير في طرق لإزالته على سبيل المثال، يمكنك الارتباط مباشرةً النشاط أو الانتقال إلى نشاط فردي باستخدام مكونات فرعية. إذا لم يكن ممكن، يمكنك استخدام SplashScreen.setKeepOnScreenCondition للحفاظ على نشاط التوجيه في مكانه مع منع العرض. إجراء ذلك ينقل شاشة البداية إلى النشاط التالي ويتوافق بسلاسة انتقالي.

Kotlin

  class RoutingActivity : Activity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        val splashScreen = installSplashScreen()
        super.onCreate(savedInstanceState)

        // Keep the splash screen visible for this Activity.
        splashScreen.setKeepOnScreenCondition { true }
        startSomeNextActivity()
        finish()
     }
   ...
  

Java

  public class RoutingActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      SplashScreen splashScreen = SplashScreen.installSplashScreen(this);

       super.onCreate(savedInstanceState);

       // Keep the splash screen visible for this Activity.
       splashScreen.setKeepOnScreenCondition(() -> true );
       startSomeNextActivity();
       finish();
    }
  ...
  

الاحتفاظ بالنشاط المخصص لبناء هوية العلامة التجارية

إذا أردت استخدام شاشة بداية سابقة Activity لأغراض تتعلّق بالعلامة التجارية، عليك يمكنك الانتقال من شاشة البداية الخاصة بالنظام إلى شاشة البداية المخصّصة Activity من خلال تخصيص الصورة المتحركة لإغلاق البداية الشاشة. ومع ذلك، من الأفضل تجنُّب هذا السيناريو إن أمكن واستخدام SplashScreen واجهة برمجة تطبيقات لإضافة علامة تجارية إلى شاشة البداية

إذا كنت بحاجة إلى عرض مربع حوار، يمكننا ننصحك بعرضه على نشاط شاشة البداية المخصّص اللاحق أو فوق النشاط الرئيسي بعد شاشة البداية الخاصة بالنظام.

إزالة نشاط شاشة البداية المخصّص

ننصحك بشكل عام بإزالة شاشة البداية المخصّصة السابقة Activity. تمامًا تجنب تكرار شاشات البداية وزيادة الكفاءة ولتقليل أوقات تحميل شاشة البداية هناك تقنيات مختلفة يمكنك استخدامها لتجنّب عرض أنشطة متكررة على شاشة البداية.

  • استخدِم طريقة "التحميل الكسول" للمكوّنات أو الوحدات أو المكتبات. تجنُّب التحميل أو تهيئة المكونات أو المكتبات غير المطلوبة للتطبيق العمل عند الإطلاق. يمكنك تحميلها لاحقًا عندما يحتاج التطبيق إليها.

    إذا كان تطبيقك يحتاج حقًا إلى مكوِّن ليعمل بشكل سليم، فلا يتم تحميله إلا عندما يكون مطلوبة حقًا وليست في وقت الإطلاق، أو استخدم مؤشر ترابط في الخلفية لتحميلها بعد بدء تشغيل التطبيق. حاول إبقاء Application.onCreate() خفيفًا بنسبة ممكن.

    يمكنك أيضًا الاستفادة من استخدام مكتبة App Startup لإعداد المكوّنات عند بدء تشغيل التطبيق. وعند إجراء ذلك، تأكد من تحميل جميع الوحدات المطلوبة لنشاط البدء ولا تقدم المشكلات التي تواجه تصبح الوحدات ذات التحميل الكسول متاحة.

  • يمكنك إنشاء عنصر نائب أثناء تحميل كمية صغيرة من البيانات على الجهاز. يمكنك استخدام نهجها الموصى به وإعاقة العرض حتى يتم جاهز. لتنفيذ شاشة بداية متوافقة مع الأنظمة القديمة، اتّبِع الخطوات التالية: الخطوات الموضحة في إبقاء شاشة البداية على الشاشة لفترات أطول

  • إظهار العناصر النائبة بالنسبة لعمليات التحميل المستندة إلى الشبكة ذات المدد غير المحددة، إغلاق شاشة البداية وعرض العناصر النائبة للتحميل غير المتزامن ننصحك بتطبيق رسوم متحركة دقيقة على منطقة المحتوى التي تعكس حالة التحميل. تأكد من أن بنية المحتوى المحمّل تتطابق مع الهيكل العظمي بالإضافة إلى إمكانية دعم انتقال سلس عند تحميل المحتوى.

  • استخدام التخزين المؤقت: عندما يفتح المستخدِم تطبيقك لأول مرة، يمكنك عرض ومؤشرات التحميل لبعض عناصر واجهة المستخدم، كما هو موضح في الشكل التالي. تشير رسالة الأشكال البيانية في المرة التالية التي يعود فيها المستخدم إلى تطبيقك، يمكنك عرض هذا المحتوى المخزّن مؤقتًا أثناء تقوم بتحميل محتوى أحدث.

الشكل 1. يتم عرض العناصر النائبة لواجهة المستخدم.