حول وضع إطلاق Android "مهمة واحدة"
-
12-12-2019 - |
سؤال
لقد قرأت دليل مطور 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
وهو ما يعني:
ال
ActivityC
ستتم إزالته من المهمة 1 وسيصبح النشاط B في أعلى النشاط.إذا قام المستخدم الآن بالنقر فوق الزر "رجوع"، فسوف يأتي إلى
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
المصادر في https://github.com/gnorsilva/Activities-LaunchMode-demo