2019 الروبوت ملخص الأسئلة العليا مقابلة: AIDL باستخدام مبادئ من لغة جافا ل

أنت تعرف أنه في ظل أنماط التصميم وسيناريوهات الاستخدام

وضع باني:

أنه يمثل بناء وفصله من كائن معقد، مثل أن عملية الإنشاء نفسها يمكن أن تخلق تمثيلات مختلفة.

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

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

نمط مراقب

وضع الوكيل

نمط الواجهة

الورقة المفردة

نموذج المنتجين والمستهلكين

ملامح لغة جافا والتفكير OOP

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

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

وقال المواضيع التي تم إنشاؤها الجارية في جافا، ويعمل تجمع الموضوع.

جافا وهناك ثلاث طرق لإنشاء المواضيع، أو التحدث أربعة

1. الأدوات الميراث الطبقة الموضوع خاصية تعدد

2. تنفيذ Runnable

3. تحقيق للاستدعاء واجهة

4. الموافقة على بركة موضوع

يعمل حمام السباحة موضوع : تجمع الموضوع يمكن أن تقلل من عدد من خلق وتدمير المواضيع، وبالتالي الحد من استهلاك موارد النظام عند إرسال مهمة إلى تجمع ترابط عند

أ. أولا، تحديد ما إذا كانت المواضيع الأساسية في التجمع موضوع ممتلئة، إن لم يكن كاملا، ثم تشكيل بعثة موضوع الأساسية، وإلا فإن الخطوة التالية

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

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

وقال انه في ظل معالج المبدأ

معالج، رسالة، وبير وMessageQueue تشكل آلية رسالة أندروز، معالج قد sendMessage تضاف الرسائل إلى قائمة انتظار الرسائل التي تم إنشاؤها، ثم الرسالة مستمرة بير مأخوذة من MessageQueue بها، والاستدعاء إلى يدوي الطرق handleMessage على التواصل موضوع .

من الحالتين، أول من خلق موضوع معالج UI، ثم نحن لسنا بحاجة لفتح بير يدويا، لأنه عندما يبدأ تطبيق، الأسلوب الرئيسي لActivityThread يخلق الترابط الرئيسي من وبير الحالي، وفتح الأخبار انتظار، انتظار الرسالة هو حلقة لا نهائية، ولماذا لا حلقة ANR لا حصر له؟ لأنه لا يمكن أن يقال، ودورة الحياة الكاملة للتطبيق لتشغيل في دورة الأخبار، اندروز هو، Looper.loop تلقي باستمرار، ومعالجة الحدث يحركها الحدث، كل نقرة أو اتصال آخر كل دورة الحياة هي تحت سيطرة Looper.loop، looper.loop بمجرد الانتهاء، ودورة حياة التطبيق يكون أكثر. يمكن أن نفكر في وكالة الاستخبارات الوطنية سوف يحدث تحت أي ظرف من الظروف، لأول مرة، لم يتم معالجة هذا الحدث، يتم معالجة الحدث الثاني، ولكن لم تكتمل، ولكن الحادث هو عملية بير، نستطيع أن نقول فقط أن مقابض سيتم حظر هذا الحدث إذا مما أدى إلى وكالة الاستخبارات الوطنية، ولكن لن أقول حلقة لا نهائية من ANR بير

وفي حالات أخرى، يتم إنشاء موضوع الطفل معالج، وهذه المرة بسبب انتظار الرسالة الترابط لم يتم تمكين افتراضيا، لذلك نحن بحاجة إلى looper.prepare المكالمة يدويا ()، وبدوره على الأخبار عن طريق looper.loop

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

سيناريوهات تسرب الذاكرة وحلول

1. أمثلة غير ثابت الطبقة الداخلية ثابتة

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

2. الطبقات الداخلية ذات الصلة متعدد الخيوط وغير ثابت مجهول الطبقات الداخلية

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

3.Handler تسرب الذاكرة

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

4.Context يؤدي إلى تسرب الذاكرة

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

5. ثابت مشاهدة يؤدي إلى تسرب

مشاهدة تجنب استخدام ثابت في كل مرة تقوم فيها بتشغيل لقراءة وتقديم كل آخر عرض، ولكن ما زالت مرجعا آخر عرض، مما يؤدي إلى لا يمكن استردادها، ودمرت الحل عندما يتم تعيين ثابت آخر عرض لاغية (عرض وبمجرد تحميلها فإن واجهة عقد مرجع كائن السياق، في هذه الحالة، فإن السياق هو موضوع آخر لدينا، أعلن مرجع ثابت متغير هذا الملف، والنشاط استشهد أيضا)

6.WebView يؤدي إلى تسرب الذاكرة

عرض ويب تستخدم فقط مرة واحدة، ولن يتم الافراج عن الذاكرة، لذلك عرض ويب لديها وجود تسرب للذاكرة، والحل المعتاد هو فتح عملية عرض ويب واحدة، وذلك باستخدام AIDL التواصل، التي تحررت في الوقت المناسب وفقا لاحتياجات العمل

7. الكائن الموارد ليس الرصاص مغلقة

كما المؤشر، ملف، الخ، فإننا نميل إلى استخدام المخزن المؤقت الداخلي يؤدي إلى تسرب الذاكرة، تأكد من إيقاف تشغيله وتعيين مراجع لاغية

8. مجموعة من الكائنات التي لم يتم تنظيفها

مجموعة من الأشياء المستخدمة في الانتظار، إذا جمع ينمو، وليس من المعقول أن تنظيف، خصوصا سهم مجموعة من ساكنة

9.Bitmap يؤدي إلى تسرب الذاكرة

الصورة النقطية المزيد من الذاكرة المكثفة، لذا يجب التأكد من تنظيف فورا عندما لا تكون قيد الاستعمال، لتجنب متغير ثابت حاصل على كائنات نقطية كبيرة

10. لا يتم إغلاق المستمع

تحتاج العديد من أنظمة لتسجيل وإلغاء تسجيل الخدمة التي يتعين القيام بها إلغاء تسجيل في الوقت المناسب، يدويا إضافة يحتاج المستمع أيضا إلى إزالتها في الوقت المناسب

كيفية تجنب OOM؟

1. استخدام بنية بيانات أكثر خفيفة الوزن : كما تستخدم ArrayMap / SparseArray بدلا من ذلك HashMap، HashMap أكثر استهلاك الذاكرة، لأنه يتطلب وجود عمليات سبيل المثال إضافية رسم خريطة الكائن لتسجيل وSparseArray أكثر كفاءة لأنه يتجنب تشغيل خزان حل قيمة مفتاح التعبئة التلقائية، والتعبئة والتغليف

2. يواجهون تعداد الاستخدام، يمكنك استخدام ثابت ثابت أو تعليقIntDef البديل

3.Bitmap الأمثل:

. وضغط حجم: عن طريق تعيين خيار inSampleSize التكبير المناسب

ب اللون الجودة: ضبط الشكل المناسب، ARGB_6666 / RBG_545 / ARGB_4444 / ALPHA_6، هناك فرق كبير

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

سلسلة البديل 4.StringBuilder : في بعض الحالات، سوف تحتاج رمز إلى استخدام الكثير من العمليات سلسلة سلسلة، وهذه المرة من الضروري النظر في استخدام ب StringBuilder بدلا من كثرة "+"

5. تجنب خلق الكائنات في مثل هذا مشابه طريقة ظيفة onDraw لأنها سوف تستخدم بسرعة الكثير من الذاكرة، مما تسبب في ذاكرة GC متكررة حتى يهز

6. إن أسلوب للحد من تسرب الذاكرة هو أيضا وسيلة لتجنب OOM

وقال انه في ظل وضع آخر بدء التشغيل، ودورة الحياة، وهما الوثب دورة آخر الحياة، وإذا قفزة إلى آخر آخر آخر ثم اضغط على مفتاح للعودة إلى دورة الحياة هو ما آخر

وضع البداية

معيار الوضع: آخر يمكن أن يكون لها مثيلات متعددة، كل مرة يتم فيها تشغيل آخر، ما إذا كان هناك مثيل هذا آخر ما إذا كان كومة المهمة، سيقوم النظام إنشاء مثيل جديد من آخر

وضع SingleTop: عندما يكون آخر singleTop نموذج أعلى من كومة كومة مهمة، تشغيله مرة أخرى، لن إنشاء مثيل جديد، إذا لم تقم بذلك أعلى المكدس، فإنه سيتم إنشاء مثيل جديد

وضع SingleTask: إذا كان آخر موجود بالفعل في الجزء العلوي من كومة، النظام لا إنشاء مثيل آخر جديد، وكما وضع singleTop. آخر ولكن لا وجود لها بالفعل ولكن أعلى من المكدس، ونظام وضع رأس آخر من المكدس، وكومة فوقه نشاطا

الوضع SingleInstance: وضع تجسيد singleInstance هو واحد، ولكنها مختلفة وsingleTask، singleTask إلا تجسيد واحد، ونظام يمكن أن يكون لها مثيلات متعددة في كومة مهمة آخر singleTask، وsingleInstance آخر مثيل واحد فقط، وهو المروج في النظام برمته عندما singleInstanceActivity يقوم النظام بإنشاء كومة مهمة جديدة، وهذه المهمة كومة فقط هو آخر

دورة الحياة

OnCreate الخاص onStart onResume onPause onStop onDestroy

آخر دورة حياة اثنين من القفزات

  • 1. إبدأ عملية

OnCreate الخاص - onStart - onResume

  • 2. بدء B في A

ActivityA onPause

ActivityB OnCreate الخاص

ActivityB onStart

ActivityB onResume

ActivityA onStop

  • 3. عودة من B (اضغط على الأجهزة الفعلية مفتاح العودة)

ActivityB onPause

ActivityA onRestart

ActivityA onStart

ActivityA onResume

ActivityB onStop

ActivityB onDestroy

  • 4. الاستمرار في عودة

ActivityA onPause

ActivityA onStop

ActivityA onDestroy

onRestart المشهد الدعوة

(1) بعد الضغط على مفتاح المنزل، ثم يعود مرة أخرى، ويدعو onRestart ().

(2) بعد آخر للقفز من النشاط النشاط الحالي، اضغط على مفتاح العودة للعودة إلى آخر الأصلي، ويدعو onRestart ()؛

(3) نشاط التحول من الحاضر إلى تطبيقات أخرى، ومن ثم التبديل مرة أخرى من التطبيقات الأخرى، ويدعو onRestart ()؛

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

سواء SurfaceView، ما هو؟ ما هي طريقه الميراث؟ عرض انه تمييز (من وجهة نظر المصدر، مثل التحميل والرسم الخ).

SurfaceView آلية التخزين المؤقت المزدوج تستخدم لضمان سلاسة واجهة UI، في حين أن SurfaceView موضوع الرئيسي ليس رسمها، ولكن آخر افتتح رسم موضوع، لذلك لا تتدخل موضوع UI.

SurfaceView الموروثة من عرض، وقال انه وعرض هناك ثلاثة اختلافات رئيسية:

(1) عرض underlayer دون آلية التخزين المؤقت مزدوجة، SurfaceView هناك.

(2) عرض مناسب بشكل رئيسي للحصول على التحديثات التلقائية، وSurfaceView التحديثات القابلة للتطبيق والسلبية، مثل التحديث المتكرر

(3) عرض سيكون في موضوع الرئيسي لتحديث واجهة المستخدم، ومن ثم تحديث SurfaceView في الخيط الفرعية.

SurfaceView لم يتم تطبيق المحتوى على النافذة، لا يمكن أن يكون التحول المستخدمة (الترجمة، التحجيم، والتناوب، الخ). ومن الصعب وضع ScrollView ListView أو لا يمكن استخدام بعض الميزات، مثل عناصر تحكم UI View.setAlpha ()

عرض: عرض عرض، قماش بنيت، وظيفة الرسم الرسومية، الحدث الشاشات التي تعمل باللمس، وظيفة الحدث الرئيسية ومثل؛ والحاجة إلى تحديث الشاشة في موضوع UI الرئيسي، أبطأ.

SurfaceView: مطلة على أساس توسيع فئة طريقة العرض، وأكثر ملاءمة لتطوير ألعاب 2D، وليس فئة فرعية للعرض، مماثلة لاستخدام آلية التخزين المؤقت مزدوجة، لتحديث الشاشة في موضوع جديد حتى تحديث واجهة أسرع من وجهة النظر، كاميرا شاشة المعاينة باستخدام SurfaceView .

GLSurfaceView: عرض SurfaceView أساس توسيع مرة أخرى الفئة طريقة العرض، مخصصة لعرض 3D من تطوير اللعبة. SurfaceView هو فئة فرعية من، بينغل الخاصة.

كيفية الحفاظ على قيد الحياة العملية

وسيتم توفير خدمة ما بعد قتل إعادة تشغيل START_STICKY (الانتظار حوالي 5 ثوان)، وإعادة الإرسال النوايا، لا يزال هو نفسه كما كان من قبل بداية الشوط الثاني: أ

ب: العملية التي startForeground تعيين عملية الصدارة، خدمة استقبال، والأولوية، ومستوى التطبيق المقدمة، ما لم يكن ذاكرة النظام قصيرة جدا، وإلا فإن العملية لن تكون القتل

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

د: الكتابة الخفي (أي الطفل) مع C: نظام أندرويد في العملية الحالية (عملية) مفترق عملية طفل، ويعتبر هذا النظام ليكون عمليتين مختلفتين. عندما قتل الوالد، والطفل لا يزال على قيد الحياة، لا تتأثر (أكثر من Android5.0 نسخة غير ممكن عمليا) إلى المورد، القائمة البيضاء

تحت ه. قفل الشاشة، يتم تشغيل بكسل على آخر

أقول ما هو بدء الباردة وبداية ساخنة هو الفرق، وكيفية تحقيق الاستخدام الأمثل للسيناريوهات وهلم جرا.

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

التطبيق بداية ساخنة: عندما تم فتح التطبيق، ولكن الضغط على مفتاح العودة، والعودة إلى سطح المكتب أو أي برنامج آخر عندما يكون مفتاح المنزل وغيرها من المفاتيح عند إعادة فتح التطبيق، وتسمى هذه الطريقة بداية ساخنة (الخلفية موجود بالفعل في عملية التطبيق). بداية دافئة لأنها سوف تضطر إلى البدء من هذه العملية، لذلك لن يذهب بدء التطبيق الساخنة هذه الخطوة، بل تذهب مباشرة MainActivity (بما في ذلك سلسلة من القياسات والتصميم والرسم)، والعملية تحتاج فقط لخلق بداية ساخنة وتهيئة MainActivity على الخط، دون الحاجة إلى إنشاء وتهيئة التطبيق

عملية بدء الباردة

عند النقر على أيقونة إطلاق التطبيق، ونظام اندرو الشوكة التي تم إنشاؤها من عملية اقحة، يتم تعيين عملية جديدة إلى التطبيق، التي يجب اتباعها من أجل إنشاء وفئة التطبيق تهيئة، إنشاء فئة MainActivity، تحميل موضوع أسلوب موضوع من windowBackground وإعدادات غيرها من الممتلكات MainActivity وسمات إلى تكوين مستوى آخر، ومن ثم تضخيم التخطيط، وعندما OnCreate الخاص / onStart / onResume طرق الانتهاء أخيرا contentView مقياس / تخطيط / رسم على شاشة العرض

بدء الباردة من عملية دورة الحياة سطور:

تطبيق منشئ - >  attachBaseContext () - > OnCreate الخاص - > منشئ آخر - >  OnCreate الخاص () - >  تكوين الجسم الخلفية وغيرها من العمليات - > onStart () - >  onResume () - >  قياس، والتخطيط، وعرض الرسم

بدء الباردة التحسين هو الأمثل أساسا البصرية، وشاشة بيضاء على حل المشاكل، وتحسين تجربة المستخدم، لذلك بدأ البرد من خلال العملية المذكورة أعلاه. الأمثل يمكن أن تفعل ما يلي:

  • تخفيف عبء العمل طريقة onCreate ()
  • لا تدع طلب للمشاركة في العمليات التجارية
  • لا تطبيق عملية تستغرق وقتا طويلا
  • لا يتم تخزين البيانات والمتغيرات ثابتة في تطبيق
  • تقليل التعقيد وتخطيط التسلسل الهرمي
  • الخيط الرئيسي للحد من تستغرق وقتا طويلا

لماذا هناك أبيض وأسود سوداء مشكلة بداية البرد؟ والسبب هو أن windowBackground وغيرها من الممتلكات ليتم تحميله في لموضوع الأنماط موضوع يحدث MainActivity عند تعيين OnCreate الخاص / onStart / onResume طريقة السابقة لتضخيم التخطيط، وwindowBackground خلفية بيضاء أو سوداء، وبالتالي فإن واجهة الأولى عندما سندخل التطبيق مما أدى إلى شاشة بيضاء أو سوداء في البداية ومن ثم في واجهة. الحلول هي كما يلي

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

< اسم النمط = `` "Splash_Theme" `` `` الأم = "android: أسلوب / Theme.NoTitleBar" `` > ` < اسم العنصر = `` "الروبوت: windowBackground" `` > @ Drawable / splash_bg < / البند > ` < اسم العنصر = `` "الروبوت: windowNoTitle" `` > `` True`` < / البند > ` < / النمط > `

2. استخدام نهج ساذج، تعيين خلفية شفافة، وإعطاء شعور تأخر البداية. ولون الخلفية إلى لون شفاف، بحيث عندما ينقر المستخدم على صورة سطح المكتب عند APP، وليس "فورا" في APP، والبقاء لفترة من الوقت على الطاولة، في الواقع، وهذه المرة بدء APP بالفعل، ومجرد أننا جهد تم تعيين الموضوع في windowBackground لون شفاف، اضطر التدريب وعاء وإعداد المحمول البائعين التطبيق (خلية رد فعل الهاتف أصدقاء بطيئة جدا)

< اسم النمط = `` "Splash_Theme" `` `` الأم = "android: أسلوب / Theme.NoTitleBar" `` > ` < اسم العنصر = `` "الروبوت: windowIsTranslucent" `` > `` True`` < / البند > ` < اسم العنصر = `` "الروبوت: windowNoTitle" `` > `` True`` < / البند > ` < / النمط > `

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

الروبوت في تلك المواضيع ومبادئ وخصائص كل

AsyncTask، HandlerThread، IntentService

مبدأ AsyncTask: اثنان الداخلية ويتم تنفيذ معالج ترابط التجمع، لتحويل موضوع معالج للموضوع الرئيسي، تجمع مؤشرات ترابط لمدة المهمة في قائمة الانتظار، وهي مهمة لأداء، عندما أعدم AsyncTask تنفيذ وطريقة تغليف يتم إضافة كائن FutureTask الكائن إلى قائمة الانتظار، إذا لم يتم تنفيذ المهمة في هذا الوقت، مجرد تنفيذه والاستمرار في المهمة التالية في قائمة الانتظار بعد تنفيذ كامل، وسوف ترسل تنفيذ الانتهاء من الحدث معالج للموضوع الرئيسي. يجب تهيئة AsyncTask في الموضوع الرئيسي، وذلك لأن معالج الداخلي هو كائن ثابت، عندما AsyncTask classloading انه تمت تهيئة. بدءا Android3.0، تنفيذ المهام طريقة تنفيذ المسلسل، واحدا تلو الآخر، حتى يتم تنفيذ 3.0 في نفس الوقت. إذا كنت ترغب في القيام بمهام موازية على 3.0، يمكنك استدعاء executeOnExecutor طريقة

HandlerThread مبدأ: ورثت من الموضوع، وبدء سوف موضوع مفتوح خلق طابور الرسالة وبير في طريقة تشغيل وفتح حلقة رسالة، تشغيل قائمة انتظار الرسائل في الخيط الفرعية، حتى تتمكن من تمرير وبير المثال HandlerThread في لمعالج للتأكد من طريقة handleMessage معالج التشغيل في الخيط الفرعية، الروبوت المستخدمة في مشهد HandlerThread هو IntentService

IntentService مبدأ: ورثت من الخدمة، تتضمن العلامة الداخلية HandlerThread ومعالج، يمكن أن تؤدي مهمة تستغرق وقتا طويلا، ولأنها هي خدمة، أعلى بكثير من موضوع الأولوية الطبيعي، لذلك أكثر ملاءمة لتنفيذ عدد من المهام الأساسية ذات الأولوية العالية، HandlerThread بير رسالة طابور من تنفيذ الأساسي، ولذلك فمن مهمة لتنفيذ كل تسلسل. نية يمكن فتحها عن طريق IntentService، IntentService نية من قبل معالج أضاف HandlerThread طابور رسالة لكل موضوع الطفل، واحدا تلو الآخر أخرجت وتنفيذها بالتتابع بواسطة بير، سعيا وراء أهدافها تلقائيا بعد الانتهاء من التنفيذ، لا يحتاج المطور إلى يدويا قريب

أسباب ANR

  • تستهلك الوصول إلى الشبكة
  • وهناك كمية كبيرة من البيانات القراءة والكتابة
  • عمليات قاعدة البيانات
  • تشغيل الأجهزة (مثل الكاميرا)
  • دعوة لموضوع الانضمام الأسلوب ()، والنوم () الأسلوب، أسلوب الانتظار () أو عندما يكون موضوع قفل الانتظار
  • وصل إلى الحد الأعلى من عدد الموثق الخدمة
  • يحدث الوكالة الدولية للطاقة ANR في ملقم نظام
  • مهلة خدمة تؤدي تستجيب مشغول
  • موضوع الآخر يحمل القفل، مما تسبب في موضوع الرئيسي إلى الانتظار للحصول على مهلة
  • ينهي موضوع الأخرى أو تعطل كانوا ينتظرون للموضوع الرئيسي
  • مخبأ ثلاثة المبدأ

    عندما يحتاج الجانب الروبوت للوصول إلى شبكة البيانات مثل الصور، أول نظرة (إيجاد زر) من الذاكرة، وليس الذاكرة ومن الملفات على القرص أو سكليتي نظرة الذهاب، وإذا كان القرص قد لا تكتسب إلا عن طريق الشبكة

    LruCache تنفيذ الأساسي مبدأ:

    ويتم تنفيذ LruCache في LRU الخوارزمية التي LinkedHashMap. ورثت LinkedHashMap من HashMap، والذي يستخدم قائمة مرتبطة مضاعف لأجل الدخول في تخزين العلاقة الخريطة،

    للالحصول عليها، وضع، إزالة وغيرها من العمليات، أشياء LinkedHashMap للقيام بالإضافة إلى HashMap لا، إجراء بعض التعديلات دخول قائمة ترتيب العمل.

    LinkedHashMap LruCache بالترتيب ترتيب المجموعة مخبأ LRU LRU لتنفيذ كل الحصول على دعوة (أي لالتقاط الصور من ذاكرة التخزين المؤقت)، ينتقل نهاية زائدة من قائمة الكائنات.

    اضافة الى وجود دعوة جديدة لوضع الكائن يتم تخزينها في ذيل القائمة، بحيث عندما يصل ذاكرة التخزين المؤقت الإعداد كحد أقصى، رئيس قائمة الكائنات (التي تستخدم أقل مؤخرا) إزالتها.

    عليك أن تدرك أنه في ظل مجموعة من هذه الفئة.

    جمع مجموعة من واجهات هو الإطار العلوي، وعاء لتخزين الأشياء، وطريقة Colloction يحدد واجهة مشتركة، مثل إضافة إزالة مسح ما شابه ذلك، واثنين من واجهات الفرعية، عناصر قائمة، ومجموعة، ويتم ترتيب قائمة الميزات، يمكن للعناصر أن يكون عنصر تكرار ديه مؤشر (منخفض)، تتميز

    ناقلات: الداخلية هو بنية بيانات صفيف (موضوع الآمن) متزامنة. إضافة أو حذف الاستعلام بطيء جدا.

    ArrayList: بنية البيانات الداخلية صفيف، و(موضوع آمنة) غير متزامنة. استبدال ناقل. الاستعلام سرعة والإضافات والحذف أبطأ.

    قائمة متصلة: لا تتم مزامنة الداخل بنية قائمة البيانات المرتبطة (موضوع الآمن). إضافة أو حذف عناصر السرعة.

    مجموعة من العناصر المميزة لاضطراب، عناصر لا يمكن تكرارها

    HashSet: بنية البيانات الداخلية هو جدول تجزئة، غير متزامن.

    تعيين يجب أن يكون عناصر مجموعة فريدة من نوعها، HashSet كما تحتاج الفئات الفرعية أيضا لضمان الطابع الفريد للعنصر.

    والطريقة الوحيدة لتحديد عناصر:

    ويتم إنجاز جوه التفرد عن طريق تخزين كائن (عنصر) يساوي وطريقة شفرة التجزئة.

    تختلف شفرة التجزئة إذا كانت قيمة الكائن، ثم لا استدعاء يساوي وطريقة تخزين الكائن مباشرة إلى جمع.

    إذا كانت قيمة شفرة التجزئة الكائن نفسه، ثم يساوي طريقة لطلبه يحدد ما إذا كانت قيمة الإرجاع هي الحقيقية،

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

    إذا كان هذا صحيحا، فإنه يعتبر ولن يتم تخزين نفس العناصر.

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

    TreeSet: ضمان تفرد العناصر ويمكن أن يؤمر غير متزامنة عناصر الداخلية.

    والطريقة الوحيدة لتحديد عناصر:

    طريقة إرجاع نتيجة المقارنة هي 0، 0 يعتبر نفسه حالة عدم وجود العنصر، ويعتبر مختلفا إذا تم تخزين غير صفرية عنصر.

    هناك طريقتان لفرز العناصر TreeSet:

    وهناك طريقة: أن العنصر (الكائن) المقابلة إلى واجهة قابلة للمقارنة تنفذ الطبقة التي تغطي طريقة compareTo. هذه العناصر لديها وظيفة مقارنة بهم.

    الطريقة الثانية: أن المجموعة نفسها قد TreeSet وظيفة مقارنة، للمقارنة المعرفة المقارنة، كائن الفئة كحجة لTreeSet مجموعة منشئ

    وقال واستخدام مبدأ تحت AIDL

    aidl هو التواصل بين العمليات في اندروز

    وقال فهمك البث تحت

    ويقول تحت فهمك للخدمات، وكيفية قتل الخدمة. دورة حياة الخدمة (بداية وربط).

    سواء اتصال مع تطوير بلوتوث

    يتمحور حول تخطيط صفحة ListView يتميز العرف مشاهدة، ويقول الطرق الرئيسية.

    - قال تحت التسلسل الموثق وعملية اجتثاث التسلسل مع استخدام عملية

    سواء اتصلت طريقة JNI / NDK، كيفية استدعاء C جافا لغة

    - كيف تنظرون إلى محاكاة SP وملف SQList. كيفية تصور عرض تخطيط التعشيش ووقت التحميل.

    أنت تقول ما استخدام أداة إدارة كود، لماذا يكون انتهاك قانون، وكيفية حل

    لقد قال أنه في ظل تلك المعرفة من برمجة الخلفية، والحديث بعض المعرفة عن تلك الجوانب من الواجهة الأمامية.

    عليك أن تدرك أنه في ظل ترابط التجمع، وكيفية إنشاء واستخدام تجمع الموضوع.

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

    فهم أنه في ظل آليات استرداد جافا الجهاز الظاهري، كيف JVM غير خاضعة للجمع، ما طرق

    بعض شفرة المصدر جافا مع المعارف ذات الصلة الروبوت

    الدرجات الكلية

    جامعة هؤلاء المهنيين، هل تعلم أفضل ما هي المجالات

    ميكروكنترولر، جزءا لا يتجزأ، والدوائر الإلكترونية.

    ما التخرج، ما عدد قليل من الناس يدركون وظيفتها الرئيسية هي

    أيضا بعض أخرى المعرفة المتعلقة الأجهزة

    حياتهم المهنية التخطيط والتنمية الاتجاه

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

    (التطبيقات بما في ذلك جافا في تطوير الروبوت، إطار APP المعرفة، UI المتقدمة، من جميع النواحي ضبط الأداء، وتطوير NDK، التكنولوجيا السمعية والبصرية، وتكنولوجيا الذكاء الاصطناعي، والتكنولوجيا عبر منصة والمعلومات التقنية الأخرى)، على أمل المساعدة قبل المقابلة الاستعراض، والعثور على وظيفة جيدة، ولكن أيضا يوفر لك الوقت للبحث عن المعلومات التعلم عبر الإنترنت.

    وضع تتلقى: خطاب الخاص الخلفية الرد "مقابلة المعلومات" في الحصول مجانا ~

    يجب المبرمجين نرى! كيف قبل 30 سنوات من التخطيط والتطوير الوظيفي، ونظرة على الاقتراح السن

    -AMS ملخص مقابلة ما هو دور المعرفة في تحليل بسيط تحت شفرة المصدر الروبوت الروبوت

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

    الصيف الفرنسية الزي مظاهرة، وتظهر الفتيات ومزاجه، لتساعدك على أن تصبح أكثر المناظر الطبيعية الجميلة هذا الطريق

    رضيع ترك مأساوي أمه، والكلاب الضالة من المجاري إنقاذ حياة! الذي كان ملفوفا أيضا في البلاستيك

    تغيرت سوي العودة إلى الأسود على التوالي منذ فترة طويلة، والأسلحة رقيقة سوداء اللباس الساقين كبيرة والبرد عالية إلهة يناسبك

    حالة | بيتل البالغ من العمر 81 عاما نهاية الحياة، ولكن هل تعرف حقا؟

    أغنية يان فاي متقلبة في الآونة الأخيرة! يوم حار ارتداء الأحذية مارتن مشاهدة "الخصر النمل" تمتص بارد اللباس العين

    الجاف | بو مليون البط والبط، والمطاعم من الصعب للكشف عن مكان وجود حفرة

    "وى يينغ لوه،" وو جنيان أرق من حقيبة الخصر، وارتداء الحمالات الريش العصرية جدا، بارد مجموعة كاملة وسيم

    حقيقة Hongmeng ، تقدم شركة Huawei وتراجعها | غلاف Caijing

    مشاهدة | العصر الصناعي للإنترنت، والصناعات التقليدية أن عددا من منصات كبيرة