الصفحة الرئيسية » howto » ما الذي يحدث بالضبط عند تمرير تطبيق Android من قائمة التطبيقات الأخيرة؟

    ما الذي يحدث بالضبط عند تمرير تطبيق Android من قائمة التطبيقات الأخيرة؟

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

    تأتي جلسة الأسئلة والأجوبة اليوم مقدمة من Android Enthusiast-a subdivision of Stack Exchange ، وهو عبارة عن مجموعة مجتمعية مدفوعة من مواقع الأسئلة والأجوبة على شبكة الإنترنت.

    السؤال

    يتطلع القارئ المتحمس لـ Android Eldarerathis إلى وظيفة التمرير السريع التي تسمح لك بسحب قائمتك من التطبيقات قيد التشغيل عبر زر الصفحة الرئيسية ، ثم مررها سريعًا إلى اليمين ، على ما يبدو لإغلاقها:

    قائمة التطبيقات الأخيرة في Ice Cream Sandwich أضافت القدرة على انتقاد التطبيقات من القائمة ، وبالتالي استبعادها بشكل دائم (وعلى حد علمي هذه وظيفة الفانيلا ، وليس CM / custom ROM واحد). لا يبدو أن أبرز الوثائق والمنصات تغطي أعمال هذه الوظيفة ، ولكنني أشعر بالفضول لمعرفة ما يقوم به النظام بالفعل.

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

    أدرك الآن أن الموسيقى ربما كانت اختيارًا سيئًا ، لقد اختبرت أيضًا مع تطبيق USA Today. أظهر هذا الأمر نفس السلوك ، وبدا أنه اضطر إلى "إعادة التشغيل" بعد توقف القوة (وهو أمر منطقي) على الرغم من أن الصورة المصغرة في قائمة التطبيقات الأخيرة لم تعكس هذا (مخبأة ، أنا أخمن؟).

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

    ما يحدث بالضبط عند تمرير التطبيق من القائمة?

    الاجابات

    يقدم متعهد Android Enthusiast Austin Mills بعض الإحصاءات:

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

    يحتوي الرابط على مزيد من التفاصيل حول التفاصيل ، ولكن بشكل عام ، يمكنك التفكير في الأمر كترك التطبيق.

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

    ثم ، بعد المشاركة في دائرة الأسئلة والأجوبة في الحياة ، عاد Eldarerathis مع بعض الأبحاث الخاصة به لإيجاد الإجابة:

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

    تحدث [W] القبعة على وجه التحديد عندما تمحو مهمة حديثة: (1) تقتل أي خلفية أو عمليات فارغة للتطبيق (راجع هنا ما يعنيه ذلك) ، و (2) تستخدم واجهة برمجة التطبيقات الجديدة لإخبار أي خدمات التطبيق حول المهمة التي يتم إزالتها حتى تتمكن من القيام بكل ما تراه مناسبًا.

    تلاحظ أيضًا في تعليق المدونة:

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

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

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


    هل لديك شيء تضيفه إلى الشرح؟ الصوت قبالة في التعليقات. هل ترغب في قراءة المزيد من الإجابات من مستخدمي Stack Exchange الآخرين المحترفين بالتكنولوجيا؟ تحقق من موضوع المناقشة الكامل هنا.