سؤال

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

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

أيضًا إذا كان هناك طريقة أفضل لهذا ، فيرجى نشر أي روابط أو أدلة ، لأنني أشعر بالارتباك في موقع مطور Android: P

شكرًا!

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

المحلول

لقد استخدمت نهج المفرد من هذه النصيحة.

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

نصائح أخرى

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

onCreate هو حدث. الإخطار بتوصيل الخدمة هو أيضًا حدث. لن يتم تسليم إشعار اتصال الخدمة (على الرغم من حدوثه) حتى تعود من OnCreate.

هل يمكنك تقسيم بدء تشغيل نشاطك إلى جزأين ، الأول الذي تم في OnCreate والثاني استجابة لاتصال الخدمة؟

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