عند استخدام IntentService
في أندرويد، يتم تنفيذ الأنشطة (Intents) التي ترسلها إلى الخدمة بشكلٍ تسلسلي، وليس بتوازي. يتم تنفيذ كل Intent في خطوة بعد الأخرى في نفس الخدمة (على نفس الخيط الرئيسي للخدمة). هذا يعني أنه عندما ترسل Intent جديدة للـIntentService
والخدمة ما زالت تعمل على Intent سابقة، سيتم تنفيذ الـIntent الجديدة بعد الانتهاء من الـIntent الحالية.
لإنشاء عدة خدمات Intent متزامنة، يمكنك ببساطة إنشاء عدة كائنات IntentService
مختلفة، كل واحدة تعمل بمفردها على خيطها الخاص. يمكنك تحقيق ذلك عن طريق تمرير معرف الفئة المختلفة عند إنشاء Intent:
javaIntent someIntent1 = new Intent(this, MyIntentService1.class);
Intent someIntent2 = new Intent(this, MyIntentService2.class);
Intent someIntent3 = new Intent(this, MyIntentService3.class);
startService(someIntent1);
startService(someIntent2);
startService(someIntent3);
هذا الكود سينشئ ويبدأ ثلاث خدمات Intent مختلفة، كل منها سيعمل في خيطه الخاص.
المزيد من المعلومات
عندما تقوم بإرسال Intent لـ IntentService
باستخدام startService(intent)
، يتم وضع الـ Intent في طابور انتظار داخل الـ IntentService
، وسيتم تنفيذها واحدة تلو الأخرى في الـ thread الرئيسي للـ IntentService
. يعني هذا أنه في الوقت الحالي، لا يمكنك تنفيذ عدة Intent في وقت واحد داخل نفس IntentService
.
إذا كنت تحتاج إلى تنفيذ عدة Intent بشكل متزامن في threads مختلفة، يمكنك استخدام IntentService
المتعدد، أي إنشاء عدة خدمات Intent مختلفة لتنفيذ كل Intent في thread خاص به.