لماذا يجب أن يكون J2ME Midlet Suite وHTTPConnection في سلاسل محادثات مختلفة

StackOverflow https://stackoverflow.com//questions/11664355

سؤال

أرغب في الاتصال بـ Servlet من J2ME midlet، لذلك كتبت رمز HTTPConnection لعنوان URL لـ Servlet لاستدعاء طريقة GET.

عندما تحاول مجموعات Midlet الاتصال بعنوان URL لـ Servlet، تظهر لي الرسالة أدناه في المحاكي،

{#MyMidlet} Midlet Suite wants to connect to {#Servlet URL} using air time,
  this may result in charges, Is it ok to use airtime ?

إذا قمت بالنقر فوق "لا" أو "نعم"، فلن يحدث شيء، لقد تم تعليقه للتو، وأنا أستخدم EclipseME وSUN WTK 2.5.2.وفي وحدة التحكم كان هناك تحذير،

Warning: To avoid potential deadlock, operations that may block, such as 
 networking, should be performed in a different thread than the 
 commandAction() handler.

مما يعني أنه إذا قمت بإجراء HttpConnection في موضوع منفصل، فهل سيتم حل المشكلة؟

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

المحلول

إذا قمت بإجراء HttpConnection في موضوع منفصل، فهل سيتم حل المشكلة؟

إذا قمت بذلك بشكل صحيح - نعم، سيتم حل المشكلة.هذه مشكلة نموذجية وهناك حل قياسي.

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

تجنب التحميل الثقيل في سلسلة أحداث واجهة المستخدم.عندما يكون هناك الكثير للقيام بشيء ما بداخله commandAction أو keyPressed أو pointerPressed وما إلى ذلك، فقط قم بإنشاء موضوع جديد للقيام بذلك.لفهم سبب ذلك بشكل أفضل، فكر في دراسة هذا البرنامج التعليمي لمعرفة كيفية القيام بذلك بشكل صحيح:

الشبكات وتجربة المستخدم والمواضيع

يشرح هذا المقال كيف يمكن لـ MIDlet الخاص بك إجراء اتصالات الشبكة دون المساس بواجهة المستخدم الخاصة بك.ويتضمن ستة أمثلة متكررة توضح الشبكات متعددة مؤشرات الترابط واستخدام شاشة الانتظار...

  • بعد المثال الأول في البرنامج التعليمي (PrimitiveMidlet)، يوجد أيضًا شرح تفصيلي للمشكلة التي تواجهها:

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

    في برمجة تطبيقات J2SE وحتى في برمجة servlet، يقوم النظام بإنشاء سلسلة رسائل لك، وهناك قيود قليلة على المدة التي يمكن أن تستغرقها المعالجة.قاعدة ترابط MIDlet بسيطة وصارمة:المواضيع الوحيدة التي تنتمي إليك هي تلك التي تقوم بإنشائها بنفسك.

    في MIDlet، أنت تقوم بكتابة التعليمات البرمجية التي سيستدعيها النظام من أحد مؤشرات الترابط الخاصة به.عندما يتم استدعاء أساليب startApp() وpauseApp() وdestroyApp() ومعالج الأحداث الخاصة بـ MIDlet، على سبيل المثال، فإنها تعمل داخل سلسلة رسائل النظام.يجب أن تعود أساليبك بسرعة حتى يتمكن مؤشر ترابط النظام من مواصلة عمله الآخر.يجب نقل أي مهمة لا يمكن إكمالها بسرعة من سلسلة رسائل النظام.

    قد يستغرق هذا النمط من البرمجة بعض الوقت للتعود عليه، حيث أنك في الحقيقة تكتب فقط التعليمات البرمجية التي يتم استدعاؤها من سلاسل النظام.ومع ذلك، إذا كنت قد قمت بأي برمجة أخرى لواجهة المستخدم الرسومية، فستكون هذه التقنية مألوفة.يحتوي AWT وSwing على مؤشر ترابط إرسال حدث يتعامل مع أحداث نظام التشغيل ويستدعي معالجات الأحداث في التعليمات البرمجية الخاصة بك.القاعدة هي نفسها:يجب أن يتم تنفيذ معالجات الأحداث بسرعة وإعادة التحكم إلى سلسلة إرسال الحدث حتى لا يتم قفل بقية الواجهة...

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

نصائح أخرى

ينشئ اتصالها كموضوع منفصل مثل هذا: giveacodicetagpre.


في J2ME يتم وضع عملية الشبكة في موضوع منفصل.
يو وضع وحدة الشبكات في موضوع منفصل. إذا وضعت وحدة الشبكات في مؤشر ترابط منفصل، فلن يتم ظهور الرسالة التالية. giveacodicetagpre.


في J2me (Sun / Oracle of j2me) يعطي بعض القيود. أمن بعض API بحاجة إلى شهادات الطرف الموثوق به. هذه الهواتف المحمولة تسأل المستخدم عن إذن عند النقرات نعم، سيسمح بذلكخلاف ذلك لن تسمح.
ما يلي، فيما يلي بعض API يتم بموجب هذه السيناريوهات هي FileConnection (القراءة / الكتابة إلى ملف) API، httpconnection، httpsconnection، إلخ.
يو فحص جهازك ما إذا كان يدعم الشهادة الموقعة ذاتيا. إذا كان الدعم يعني أنك تستخدم شهادة توقيع الذات.
شهادة الحزب الموثوق بها مكلفة. التكلفة الحد الأدنى هي Ruppees 10000 سنويا. فيما يلي بعض البائعين الأحزاب الموثوق بها Thawte، Verizon، Semantec، إلخ

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