سؤال

لقد قرأت دليل مطور Android وبعض المقالات على الإنترنت، وما زلت في حيرة من أمري بشأن singleTask launchmode.لنأخذ مثالا:

يقوم المستخدم بتشغيل App1، ويبدأ android مهمة جديدة.افترض أن App1 يقوم بإنشاء أنشطة بالترتيب التالي:

ActivityA -> ActivityB -> ActivityC

هكذا تبدو المهمة 1.

ثم ينقر المستخدم على زر الصفحة الرئيسية ويختار تشغيل App2، بحيث تنتقل المهمة 1 إلى الخلفية ويبدأ Android مهمة جديدة:المهمة 2، يقوم المستخدم بشيء ما:

ActivityD -> ActivityE

الآن دعنا نقول ActivityE حاول أن تبدأ ActivityB ، و ActivityB لديه وضع الإطلاق singleTask.

ما أفهمه هو أن المهمة 1 تأتي إلى الواجهة الأمامية مرة أخرى وتنتقل المهمة 2 إلى الخلفية.والمهمة 1 تبدو الآن كما يلي:

ActivityA -> ActivityB

وهو ما يعني:

  1. ال ActivityC ستتم إزالته من المهمة 1 وسيصبح النشاط B في أعلى النشاط.

  2. إذا قام المستخدم الآن بالنقر فوق الزر "رجوع"، فسوف يأتي إلى ActivityA من Task1 بدلاً من العودة إلى ActivityE من المهمة 2

هل انا على حق؟

شكرًا

هل كانت مفيدة؟

المحلول

ستتم إزالة ActivityC من المهمة 1 وسيصبح ActivityB في أعلى النشاط.

نعم كلامك صحيح...

ستتم إزالة ActivityC من أي.سيتم استدعاء طريقة onDestroy الخاصة بـ ActivityC.ومن ثم، عندما يقوم المستخدم بتشغيل المهمة 1 مرة أخرى، يتم عرض ActivityB بدلاً من ActivityC.

لقد أنشأت مهمتين (مشروعين) وقمت بتحميل نفسهما @ مساحة الإرسال.حاول...

إذا نظرت إلى androids توثيق انها تقول

"يسمح نشاط "مهمة واحدة" للأنشطة الأخرى بأن تكون جزءًا من مهمته.إنها دائمًا السبب الجذري لمهمتها، ولكن يمكن إطلاق الأنشطة الأخرى (بالضرورة الأنشطة "القياسية" و"singleTop") في هذه المهمة."

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

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

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

ومن هنا التحذير

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

آمل أن يحل هذا شكوكك.

نصائح أخرى

يبدو أنك على حق.

لماذا لا تختبره.

يوجد أيضًا هذا التطبيق الذي يمكن أن يساعد في شرح وضع التشغيل:

https://play.google.com/store/apps/details?id=com.novoda.demos.activitylaunchmode

enter image description here

المصادر في https://github.com/gnorsilva/Activities-LaunchMode-demo

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top