انتقل إلى المحتوى

دراسة حالة

لماذا يبدو تطبيق Android بطيئًا بعد كل تحديث

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

أهم النقاط

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

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

التطبيق البطيء يكلّف النشاط التجاري حتى دون أي عطل

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

لماذا يبدو تطبيق Android بطيئًا بعد التحديث

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

والملف التعريفي الأساسي (baseline profile) هو الحل لذلك النصف من المشكلة. وهو تسجيل، يُجرى مرة واحدة على هاتف اختبار، لأجزاء التطبيق التي تستخدمها الشاشات الرئيسية، ويُشحن داخل التطبيق حتى يتمكن Google Play من تهيئتها عند تثبيت تحديث.

ما وجده مهندسنا على هاتف اختبار

لم يكن البطء شاشة ثقيلة واحدة، بل تكاليف صغيرة عدة تتزامن في اللحظات نفسها.

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

ما غيّرناه

أزلنا العمل المتكرر وأعطينا التطبيق خريطة لنفسه يرحل بها مع كل تحديث.

  • صار وصول دفعة من الرسائل الجديدة يُجمع في تحميل واحد، بعد ثانية ونصف من وصول آخر رسالة.
  • الطلبات المطابقة تتشارك إجابة واحدة، وإذا تغيّر شيء في الأثناء، فالإجابة الأحدث هي التي تُعرض.
  • القوائم الطويلة ترسم فقط الصفوف الظاهرة على الشاشة وتضيف الباقي مع تمرير الشخص.
  • نُقلت القراءة وفتح الملفات عند بدء التشغيل بعيدًا عن الجزء الذي يرسم، وتُحفظ المسودة مرة واحدة عند توقف الكتابة 400 مللي ثانية، وتُنسَّق التواريخ والأرقام بأدوات تُبنى مرة واحدة بدلًا من كل صف.
  • كلمات كل لغة تُهيَّأ فقط عند استخدام تلك اللغة.
  • الملف التعريفي الأساسي يرحل داخل كل تحديث، فيُهيّئ Google Play الشاشات الرئيسية عند تثبيته. وعندما أعدنا ترتيب الشاشات في اليوم التالي، سجّلناه من جديد، لأن خريطة لم تعد تطابق التطبيق لا تفيد أحدًا.
  • أُعيدت كتابة نص العرض التجريبي، وأصبح أحد فحوصنا الآن يفشل عند أي صياغة ترفضها Android، حتى لا تعود تلك الثغرة تنفتح بهدوء.

أين وصلنا، وما لا ندّعيه

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

ما يمكنك التحقق منه بنفسك

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

ما تفعله بعد ذلك

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

أسئلة شائعة

لماذا يبدو تطبيقي على Android أبطأ مباشرة بعد التحديث؟

يتعلّم Android أكواد التطبيق على مدى أيام من الاستخدام، لا دفعة واحدة. يكون التطبيق في أبطأ حالاته في تلك الفترة ويستقر مع رؤية الهاتف للأجزاء التي تُستخدم؛ وإذا وصل تحديث آخر قبل أن يستقر، تبدأ الفترة من جديد. ولا يوجد رقم واحد يناسب كل هاتف وكل تطبيق.

ماذا أعطي مطوّرًا لم يسمع بالملف التعريفي الأساسي قط؟

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

هل يمكن إصلاح القوائم البطيئة والتحميل المتكرر دون إعادة بناء التطبيق؟

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

كيف أعرف أن تطبيقي بطيء على الهواتف الحقيقية إذا نجحت كل الفحوص؟

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

هل سيشعر الناس بفرق، ومتى؟

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

من Tech Concierge

هل تريد من يتولى هذا لعملك؟

مهندسك الخاص يبني ويدير الموقع والتطبيق ونظام CRM ومساعد الذكاء الاصطناعي الذي يرد على عملائك.

أول 7 أيام مجانًا.

اقرأ أيضًا

دراسة حالةتطبيقات الجوال

رفض App Store بسبب موافقة الذكاء الاصطناعي: ما اضطر تطبيقنا إلى تغييره

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

قراءة في 5 دقائق

دراسة حالةتطبيقات الجوال

لماذا يتوقف الناس عن الكتابة في محادثة تطبيقك

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

قراءة في 4 دقائق

دراسة حالةالفيديو والمحتوى

لماذا يضيف الذكاء الاصطناعي شخصًا ثالثًا إلى مشهد من شخصين

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

قراءة في 4 دقائق

نحصي زيارات هذه المدونة بأدوات التحليل الخاصة بنا، لا بأدوات Google، ولا نشارك ما تقرؤه مع أحد. هل نتذكر هذا المتصفح بملف تعريف ارتباط؟ التفاصيل في سياسة الخصوصية.