اتجاهات جديدة لتطوير منصة مألوفة بالفعل - من المثير للاهتمام دائمًا. من ناحية ، تقوم بتوسيع قاعدة العملاء ، من ناحية أخرى ، أنت لا تستثمر في إنشاء برامج من البداية ، ولكن باستخدام التطورات الحالية. ولكن إذا كان الاتجاه جديدًا حقًا ، مع تفاصيله الخاصة ، فلن يكون من الممكن التعامل مع القليل جدًا من الدم. في الاجتماع التالي لمجتمع Mosdroid في مكتبنا ، تحدث المطور Arthur Vasilov
Arturka عن تكييف تطبيق Yandex مع نظام Android Go.
في المتوسط ، إذا لم تكتب آلة حاسبة ، أو ساعة منبه ، وما إلى ذلك ، فأنت إما رائع جدًا ، أحسنت ، وفعلت كل شيء بشكل جيد ، أو يستغرق تطبيقك 150-170 ميغابايت.
- اسمي آرثر ، أنا مطور Android ، أعمل على تطبيق Yandex. سأشارككم اليوم قصة حول كيفية تكيفنا مع Android Go. سأخبرك بنوع أشعل النار التي تعثرنا عليها ، وما لم ينجح بالنسبة لنا وكيف يعمل كل شيء ، ولماذا هناك حاجة إليه.
انحراف صغير عن كل شيء. Android Go هو إصدار خاص من Android مصمم للأجهزة منخفضة التكلفة. تكلفة 60-100 دولار ، وبالتالي فهي ضعيفة للغاية ، بطيئة ، بطيئة. لذلك قررت Google إنشاء نظام خاص بهم حتى يعملوا بشكل طبيعي على الأقل بطريقة أو بأخرى. تم الإعلان عنه على Google I / O في عام 2017 ، أي مرت سنة وعدة أشهر. لذلك ، عندما تم الإعلان عن "ميتاب" ، أثير سؤال منطقي: "هل ما زلت على قيد الحياة أم ماذا؟" ثم قلت أن كل شيء على ما يرام ، كل شيء على ما يرام ، سأقول. والآن ، بصفتي بطل إنترنت نموذجي ، سأجيب لاحقًا عن سبب حدوث ذلك.

ماذا حدث بالضبط؟ قالت جوجل: "نحن نصنع مثل هذا النظام". ثم قال: "حسنًا ، نحتاج إلى وقت للانتهاء" وكل ذلك. بعد ذلك ، يكون لدى البائعين دائمًا نوع من التأخير في تكييف هذا الإصدار لأنفسهم. والنسخة الجديدة معنا تم إصدارها بالفعل في موعد لا يتجاوز العام التالي ، لذلك ليس هناك ما يثير الدهشة هنا. بالإضافة إلى ذلك ، كان عليهم أن يقرروا ما إذا كانوا سيفعلون مثل هذا الشيء: إنهم يتحدثون عن الأجهزة الرخيصة وليس من الواضح ما إذا كانوا سيستفيدون منها أم لا. بالإضافة إلى ذلك ، يجب أن يكون هذا الجهاز جديدًا ، ويجب القيام به ، وتعلم كيفية البيع ، وفهم كيفية عمله.
ظهر أول هاتف ذكي يعمل بنظام Android Go منذ وقت ليس ببعيد. في مكان ما في أبريل ، ربما بدأت المبيعات ، أو ربما في مايو. هذا هو نوكيا 1 ، يباع في كل مكان. أنا مستلقي هنا. الآن ، في رأيي ، هناك تسعة هواتف ذكية فقط في السوق ، ولكن بحلول نهاية العام ، يعدون بأكثر من مائة. ومن حيث المبدأ ، لم يقل أي من اللاعبين الرئيسيين مثل Huawei و Samsung وغيرهم كلمتهم ، لذلك سيضيفون شيئًا آخر ، لن يتمكنوا من الابتعاد عن مثل هذا السوق الكبير.
قبل التقرير ، انتقلت إلى صفحة Android Go ورأيت أنهم صنعوا إصدار Android Pie Go. لكنهم لم يفعلوا شيئًا هناك ، فقد قللوا ببساطة عدد التطبيقات المثبتة ووزنها مسبقًا. قالوا: - "لديك الآن ضعف المساحة الحرة". والأعذار القياسية: إصلاح الخلل ، تحسين الأداء ، كل شيء. ولكن على الأقل اتصلوا ، مما يعني أنهم لم ينسوا.
ما هي حدود هذه الأجهزة على وجه التحديد؟ أولاً ، لديهم 512 ميغابايت أو 1 غيغابايت من ذاكرة الوصول العشوائي ، 8 أو 16 غيغابايت من التخزين. من الواضح أنه في ظل هذه الظروف يتم تثبيتها بشدة وأن جميع التطبيقات العادية عليها ستعمل بنفس الطريقة تقريبًا. من أجل أن تعمل التطبيقات مع الحد الأدنى من الملاءمة ، قالت Google ، "دعونا نقدم المتطلبات التالية". إنها منطقية تمامًا ، اتبع ما كان في الشريحة السابقة.

بادئ ذي بدء ، هو أداء جيد مجردة. يجب أن يعمل التطبيق الخاص بك بشكل جيد وسريع على مثل هذا الجهاز. نحن: "عظيم. نحن نعمل ".
بعد ذلك ، هناك أرقام محددة يجب تلبيتها. المساحة المشغولة بعد تفريغ وتثبيت APK لا تزيد عن 40 ميجابايت. في بعض الأحيان تكون هذه مشكلة لأن شخص و APK يزنان كل 80 ميجا بايت. سوف يؤلم. علاوة على ذلك ، لا يمكن أخذ ذلك وقياسه بشكل كاف. أي أنه لا يمكنك القول: "أعلم أن ملف APK الخاص بي يزن كثيرًا ، لذا بعد التثبيت سيستغرق التطبيق الكثير." يعتمد كل هذا إلى حد كبير على البائع ، وإصدار الجهاز ، ونظام Android ، وما إلى ذلك. ولكن إذا كان ملف APK الخاص بك يأخذ 10 ميغابايت ، فمن حيث المبدأ ، كل شيء على ما يرام ولن تتجاوز هذا الرقم أبدًا.
والآن أكثر المتطلبات متعة وباردة: يجب ألا تتجاوز ذاكرة الوصول العشوائي المستهلكة أثناء العمل مع التطبيق 50 ميغابايت.
من يدري مقدار ذاكرة الوصول العشوائي التي يأخذها تطبيقه في المتوسط أثناء التشغيل؟ من تساءل عن هذا الموضوع؟ هل يوجد أي شخص لديه أقل من 100 ميغا بايت؟ وسيم. ولكن ربما كنت تكذب. بشكل عام ، في المتوسط ، إذا كنت لا تكتب آلة حاسبة ، وساعة منبه ، وما إلى ذلك ، فإما أنك رائع جدًا ، وحسنت ، وفعلت كل شيء بشكل جيد ، أو يستغرق تطبيقك 150-170 ميغابايت. من الصعب جدًا وضعه في 50 ميغابايت. لذلك ، في بقية الوقت سنتحدث عنه ، سنناقش كيفية وضع الكرة الأرضية في بومة ، إلخ.

ماذا تتضمن محادثة ذاكرتنا؟ من الضروري فهم ما نقوم بقياسه بالضبط ، ثم ما هي أفضل طريقة لقياسه. أيضًا بالنسبة لأجهزة Android Go ، هناك خصوصية يجب أخذها في الاعتبار ، وسنتحدث عنها أيضًا. وسأخبرك أيضًا ببعض الأشياء العامة ، والنصائح العامة التي ربما لم تكن قد خمنت عنها ، ولكن يمكنها حقًا تناول الكثير من الذاكرة منك.
في عام 2018 ، بعد مرور Google I / O ، تحتاج إلى بدء القصة عن الذاكرة مع الإشارة إلى
هذا التقرير . من شاهده؟
عظيم. جميع الأشخاص الـ 180 المتبقين يعرفون ماذا يفعلون في المستقبل القريب. في رأيي ، هذا أحد أفضل التقارير على Google I / O. قال الرجل أشياء رائعة بشكل لا يصدق. قال كل شيء على الرفوف ، وبتفاصيل عميقة كثيرة. أولئك الذين شاهدوه ويتذكرونه جيدًا ربما يلاحظون أنني قمت بنسخ بعض الأشياء من هناك ، لأنه من المستحيل خلاف ذلك ، قال كل شيء ، لذلك سأكررها.
ماذا نقيس؟ كان هناك شيء يسمى PSS (حجم المجموعة النسبي). أي أن ذاكرة الوصول العشوائي في Android يتم تمثيلها بحوالي 40 كيلوبايت من الكتل ، ويمكن أن تنتمي هذه الكتل بالكامل إلى التطبيق ، أو تفتش بين العمليات والتطبيقات.
والسؤال هو: كيف نفهم بالضبط أي تطبيق لربط هذه الذاكرة المشتركة؟ هناك العديد من الطرق ، فهي منطقية تمامًا. يقول PSS أنه إذا كانت الذاكرة تتعثر بين عمليات N ، فسوف نفترض أن تطبيقك يمتلك 1 / N من تلك الذاكرة. وبنفس الطريقة تمامًا هناك حجم المجموعة السكنية وحجم المجموعة الفريد ، والذي يقول "لا شيء من الذاكرة المشتركة يخصني" و "كل شيء ينتمي". من حيث المبدأ ، PSS هي الأكثر منطقية هنا.
كيف يمكنك قياس الذاكرة المستهلكة بالضبط؟ كل شيء بسيط هنا. إما أن يكون ملفًا شخصيًا في Android Studio ، أو أنه مقالب. هناك بالطبع أدوات أخرى. يمكنهم تقديم نتائج أكثر تفصيلاً ، وشيء أكثر تعقيدًا ، لكن المشكلة هي أنه لفهم نتائجهم ، فإن استخدامها كل هذا أمر صعب للغاية. غالبًا ما تحتاج إما إلى الجذر أو إصدار مخصص من Android. وعلى العموم أنت لا تحتاج إليها ، أول أداتين كافيان.

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

Dumpsys هو شيء بسيط في وحدة التحكم لا يتطلب أي شيء منك ، فقط هاتف متصل و ADB. ويمكنك تنفيذ هذا الأمر: استدعاء dumpsys meminfo ، وتمرير الحزمة إليها ، وسوف تعيد شيئًا مثل هذا لك. وإذا كنا مهتمين بمدى استهلاك تطبيقنا ، فيمكننا أن ننظر على وجه التحديد إلى TOTAL ، التي تنص على أن "تطبيقك يأكل حوالي 168 ميغابايت". الكثير ، ولكن ماذا تفعل؟

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

يمكنك ، على سبيل المثال ، أخذ المعلومات الحالية حول الذاكرة الخالية والذاكرة المشغولة ورؤيتها. سيجلب لك شيئًا مثل لافتة تقول ، "هنا لدي الكثير من الذاكرة الحرة ، الكثير من الذاكرة المخبأة ، الكثير من الذاكرة المشغولة." وإذا كان لديك 200-250 ميغابايت من الذاكرة الخالية لحبيبك هناك ، فهذا جيد ، على الأرجح ، فلن يؤثر شيء على اختباراتك.
ربما شخص ما لديه سؤال الآن "لماذا أحتاج كل هذا؟" هذا مثل هذا القاطع الذي سأقول فيه بالإضافة إلى الدافع لكل هذا.
أولاً ، حتى إذا كنت لن تفعل أي شيء في Android Go الآن وتعتقد أنها ماتت ، فقد تتطور بشكل جيد ، وتأتي إليك ، وفي مرحلة ما سيكون عليك التعامل مع كل هذا.
الشيء الثاني الذي أعتبره مهمًا جدًا هو أنه يمكنك فقط إجراء اختبارات الانحدار من الذاكرة. بمعنى ، يمكنك ببساطة كتابة برنامج نصي لتشغيل التطبيق ، وإجراء عمليات تفريغ ، واتخاذ مثل هذه القياسات ، ومشاهدة كيف تتغير هذه المؤشرات بين الإصدارات. يمكن كتابة مثل هذا السيناريو في غضون ساعتين ، ويمكن تكوين البنية التحتية لفترة أطول ، ولكن يبدو لي أن هذا أمر جيد.
إذا تحدثنا عن تفاصيل Android Go - نقطتنا الثالثة في مكافحة الذاكرة - فهناك بعض الأخبار الجيدة. أولاً ، لا يطلب منك أحد حقًا اتباع هذه القيود. أي أنه يمكنك استخدام التطبيق كما هو ، ووضعه على الجهاز مع Android Go ، وكل شيء على ما يرام. تكمن المشكلة في أن المستخدم من المحتمل جدًا أن يزيلك لأنك تشغل مساحة كبيرة. أيضا قد يعمل التطبيق الخاص بك ببطء ولديها مجموعة من الذاكرة ، نعم. ولكن حتى الآن لم يمنعه أحد ، لأنه بخلاف ذلك لن يكون هناك تطبيق بخلاف تطبيقات Google على Android Go. ولكن إذا تطور هذا الشيء أكثر ، فسيتكيف الكثير مع هذه الظروف ، ثم في النهاية ، يمكن ببساطة تخفيض تطبيقك في إصدار Android Go ، أو يمكنك إظهار تنبيه كيف يقوم المستخدم بتثبيت التطبيق على هاتف Android Go الذكي. : "يا صاح ، التطبيق لا يعمل جيدًا مع Android Go. ربما لن تضعها؟ "
هناك نقطة أخرى - يمكنك استبعاد أجهزة Android Go يدويًا من Google Play ، بمعنى أنه لا يمكن تثبيت التطبيق على أجهزة Android Go. ظهر منذ وقت ليس ببعيد.
وجوجل أيضا ذكي بما فيه الكفاية ، و 50 ميغا بايت التي ظهرت في عنوان التقرير ليست رقما ثابتا ، بل تعتمد على دقة الجهاز ، وحجم الشاشة ، علاوة على نوع التطبيق. على سبيل المثال ، يتم تخصيص المزيد من الألعاب ، في رأيي ، 115 ميغابايت. من حيث المبدأ ، هذا أمر مفهوم.

ماذا لو تحدثنا مباشرة عن هذا الاختبار؟ هناك نقطة أخرى ، والتي تهمنا بشكل خاص للغاية - العمل مع الإعدادات المسبقة. عندما يصنع الباعة هاتفًا جديدًا ، غالبًا ما يضعون هناك مجموعة من التطبيقات المثبتة مسبقًا. على وجه الخصوص ، نحن منخرطون جدًا في ذلك ، والمشكلة هي أنهم يديرون أشياء مثل Compatibility Test Suite. هذه هي اختبارات جوجل ، يقومون بتشغيلها. وهناك ، إذا كان تطبيقك لا يتوافق مع هذه الـ 50 ميغا بايت ، فإن كل شيء سيء ، ولا يمكن تثبيت تطبيقك مسبقًا على مثل هذا الجهاز.
لسوء الحظ ، فإن الاختبارات التي أجرتها Google ليست من مصادر مفتوحة ، ولا يمكنني إخبارهم ، فهي تخضع لاتفاقية عدم الإفشاء ، ولكن المطورين الجيدين من Google كتبوا مقالة حول Android Go ، وهناك ، من حيث المبدأ ، توصيات جيدة بما يكفي
أي أن كل شيء مبتذلة. أطلقنا التطبيق. ننتظر 5 ثوان لتحميل كل شيء. نحن نقوم بدفايات ، نكتب القيمة الإجمالية ، ننفذ مجموعة من المرات ، نحصل على النتيجة. كل شيء بسيط للغاية ومألوف.

الشيء الوحيد هو أنهم لم يأخذوا في الاعتبار مثل هذه الميزة الصغيرة في مقالتهم ، أو ربما لم يتحدثوا عنها - هناك شيء مثل العمل في عملية أخرى ، وغالبًا ما يفعلون ذلك من أجل القتال بما في ذلك استهلاك الذاكرة.
من يعتقد أن هذا جيد لـ Android Go؟ ومن يعتقد أن هذا سيء؟ بشجاعة.

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

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

إذا تحدثنا عن استهلاك الذاكرة ، فلننتقل إلى هذا الطبق الموجود هناك. نأخذ مشروعًا فارغًا ، وندير هذه المقالب ، ونطلق هذا العمل ، ونرى أنه قد تم بالفعل أخذ 23 ميغابايت من 50. إفراغ "Hello، world!" بدون أي شيء ، ما عليك سوى التنشيط باستخدام النص. أصبحت حزينة للغاية. يصبح الأمر أكثر حزنًا من إدراك أنه يمكننا التأثير مباشرة على معلمة مثل Java Heap ، أي أنها كائنات Java الخاصة بنا مباشرة والتي يمكننا تتبعها بشكل صريح ، والتي يمكننا حذفها ، وتقليلها ، والتفاعل معها بطريقة أو بأخرى.
ومن الصعب التفاعل بشكل طبيعي مع هذا الأمر برمته ، لأن هذا هو أي رمز إطاري ، ومن جافا مباشرةً ، ليس لديك ببساطة أدوات عادية لفهم كيفية استخدام كل هذا. لكن الخبر السار هو أنه يمكننا التأثير على هذا الأمر كله بشكل غير مباشر ، لذلك دعونا نتحدث عما يوجد.

ما هو Java Heap مفهومة. ما هو كومة الأصلي هو أيضا منطقي للغاية الافتراض. هذه هي نفس التخصيصات ، فقط إيجابية. وهي تأتي من الإطار ومن مكتباتك الأصلية ، وملفات .so ، والمزيد.
يرتبط الكود مباشرة بتخزين الكود. هذا هو حجم ملفك .dex ، هذا هو .so الخاص بك ، هذه هي الموارد وملفات mmap وكل ذلك. أي أنه كلما قل الرمز ، كان ذلك أفضل. أبسط حقيقة تعمل بشكل عام عن كل شيء.
المكدس هو مجموعة من مؤشرات ترابط Java / C ++. أي أن كل سلسلة رسائل لها مجموعة مكالمات خاصة بها ، لذلك ينشئ كل مؤشر ترابط مساحة محددة من الذاكرة لتخزين هذا الشيء بأكمله.
الرسومات هي تقديم واجهة المستخدم. هناك صور نقطية مخزنة جزئيًا يتم رسمها وما يرتبط بها.
خاص آخر ، النظام - هذا شيء لا يمكننا التأثير عليه على الإطلاق ، وفي الواقع ، كل شيء آخر غير قابل للتصنيف.

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

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

إذا واصلت الحديث عن سلاسل الرسائل ، فيمكنك بسهولة مشاهدة ما لديك من أجل سلاسل الرسائل ، وما تفعله في التطبيق. هناك أدوات مختلفة. يمكنك استخدام نفس النظام ، يمكنك فقط استخدام وحدة التحكم للعثور على معرف العملية الخاصة بك ، والاستيلاء على ps حسب المواضيع الموجودة في النظام.
إذا قمت بعمل جيد واستخدمت جميع أنواع ThreadFactory لتسمية سلاسل المحادثات الخاصة بك ، فيمكنك عندئذٍ فهم ما يجب أن يكون لديك ، وما لا يجب أن يكون ، وبالتالي تقليل كل شيء ، لأن وجود 100 سلسلة في التطبيق لا معنى له بشكل خاص.
ما الذي يمكن فعله أيضًا؟ هناك مجموعة معروفة من نصائح الأكورديون: راقب التسريبات ، واستخدم التجمعات ، ولا تنشئ كائنات عندما لا تحتاج إليها ، وكل هذا الهراء ، كل هذا ينطبق. عظيم.
هناك ارتباط جيد بين مقدار استهلاك التطبيق الخاص بك للذاكرة وحجمه. أي أنه كلما كان تطبيقك أكبر ، كلما استهلك المزيد من الذاكرة ، لذلك ، بطريقة بسيطة ، قلل من وزن APK ، قلل من وزن dex ، قلل .so ، أزل كل ما يمكن إزالته.
. , , , . , ? — — , . , , . . — .

dumpsys, , , . , , View, WebView, Assets, .

, , , , , SharedPreference SQLite - , , , .

, , Assets. , , – . 1,5 . -, , . .

— WebView. , WebView, , dumpsys, 100 , . , , - , , 300 — . , WebView , . -.

Google . . WebView, Google, - . WebView. .

Google Go, Android Go-. , - layout , . , , , Chrome Tabs, Chrome . .
Android Go, ? , Android Go, .

هناك عدة طرق. -, , , Android Go . , , . , , , - build , - , , - . APK, , — uses-feature «low-memory», APK.
, , Android Go. Google. , , Go- .
, ? , , - , : «, - . ». . , , , , , - , , - . , , , , Google, Google , . , , , Android Go , , .
, , , -. .

, Google I/O: , - . , , , , , - , . , « , . ». . , . , .
? , . — , , 98% . , , , . . - Android Go-. , YouTube Go . YouTube , , , . لا اعرف. , Android Go , , , — . — Facebook Lite, Twitter Lite, . Lite, - . -, , . Facebook, . , , . , — , Android Go.
?
Stack Overflow, 1000 . . , , , . , , — dumpsys.
, Android , 512 , Android 4.4.
API , .
, . , . — , .
, : « ». : «». . — , . - 170 . . - . ? , , , , - . - — . 105 . .

. build- -. densitySplit, , resConfig, . , , — . ProGuard . , ProGuard , , , , , stacktraces.
. , , Android Go- .
- 64 . : «, ». 14 , 4 , 60 . , . . , . — , , , , . , , , Android Go, . 10 , APK , , . , , .
لذا فإن أفضل حل هو التطبيق الثاني. ومع ذلك ، قلة من الناس سينفقون الموارد على ذلك ، في حين أن الربح الحقيقي غير واضح. ربما لن تكون قصتك حزينة للغاية ، لأنه كان لدي القليل من الجهد المتبقي ، كنت أتسلق ، لكنني كنت لا أحتمل بالفعل. لكن مثل هذه القصة. في هذه الملاحظة الإيجابية نسبيًا ، ربما يمكنك إنهاءها. شكرا لكم جميعا.