تعرف على دورة حياة الطلبات التي تم إنشاؤها باستخدام Cronet وكيفية إدارتها باستخدام طرق معاودة الاتصال التي توفرها المكتبة.
نظرة عامة على مراحل النشاط
تمثِّل الفئة UrlRequest
طلبات الشبكة التي تم إنشاؤها باستخدام مكتبة Cronet.
من المهم فهم المفاهيم التالية حول مراحل نشاط
UrlRequest
:
- الحالات
- الحالة هي الحالة المحدّدة التي يكون فيها الطلب في فترة محدّدة. تنتقل عناصر UrlRequest التي تم إنشاؤها باستخدام مكتبة كرونت عبر حالات مختلفة خلال مراحل نشاطها. تتضمن دورة حياة الطلب حالة أولية وحالات انتقالية ونهائية متعددة.
- طريقتان (
UrlRequest
) - يمكن للعملاء استدعاء طرق محددة في كائنات
UrlRequest
بناءً على الحالة. تعمل الطريقتان على نقل الطلب من حالة إلى أخرى. - طريقتان (
Callback
) - من خلال تنفيذ طُرق الفئة
UrlRequest.Callback
، يمكن أن يتلقّى تطبيقك آخر الأخبار عن مستوى تقدّم الطلب. يمكنك تنفيذ طرق استدعاء الدوال البرمجية لاستدعاء طرق كائنUrlRequest
الذي ينقل مراحل النشاط من حالة إلى أخرى.
تصف القائمة التالية سير عمل
UrlRequest
:
- تكون مراحل النشاط في حالة تم البدء بعد أن يطلب تطبيقك طريقة
start()
. - يمكن أن يرسل الخادم استجابة إعادة التوجيه، والتي تأخذ التدفق إلى الإجراء
onRedirectReceived()
. وبهذه الطريقة، يمكنك اتّخاذ أحد الإجراءات التالية للعميل:- اتبِع عملية إعادة التوجيه باستخدام
followRedirect()
. تعيد هذه الطريقة الطلب إلى الحالة Started (تم البدء). - يمكنك إلغاء الطلب باستخدام
cancel()
. تأخذ هذه الطريقة الطلب إلى طريقةonCanceled()
حيث يمكن للتطبيق إجراء عمليات إضافية قبل نقل الطلب إلى الحالة النهائية ملغاة.
- اتبِع عملية إعادة التوجيه باستخدام
- بعد أن يتّبع التطبيق جميع عمليات إعادة التوجيه، يرسل الخادم عناوين الاستجابة ويُستدعى الإجراء
onResponseStarted()
. الطلب في حالة انتظار القراءة(). يجب أن يستدعي التطبيق الطريقةread()
لمحاولة قراءة جزء من نص الاستجابة. بعد استدعاءread()
، يكون الطلب في حالة القراءة، حيث تظهر النتائج المحتملة التالية:- تمّت عملية القراءة بنجاح، ولكن تتوفّر المزيد من البيانات. يتم استدعاء
onReadCompleted()
ويصبح الطلب في حالة انتظار القراءة() مرة أخرى. يجب أن يستدعي التطبيق الطريقةread()
مرة أخرى لمواصلة قراءة نص الاستجابة. ويمكن أيضًا للتطبيق التوقف عن قراءة الطلب باستخدام طريقةcancel()
. - تم إجراء القراءة بنجاح، ولا تتوفّر بيانات أخرى.
تم استدعاء الطريقة
onSucceeded()
ويصبح الطلب الآن في الحالة النهائية تم بنجاح. - تعذَّر إجراء القراءة. تم استدعاء الإجراء
onFailed
وأصبحت الحالة النهائية للطلب الآن تعذّر.
- تمّت عملية القراءة بنجاح، ولكن تتوفّر المزيد من البيانات. يتم استدعاء
يوضّح المخطّط التالي دورة حياة عنصر UrlRequest
:
أسطورة | |
---|---|
حالة أولية واحدة () | حالة نهائية واحدة () |
حالة انتقالية واحدة () | طريقة لرد الاتصال |
طرق UrlRequest |