چرخه عمر درخواست کرونت

در مورد چرخه عمر درخواست های ایجاد شده با استفاده از Cronet و نحوه مدیریت آنها با استفاده از روش های پاسخ به تماس ارائه شده توسط کتابخانه بیاموزید.

مروری بر چرخه حیات

درخواست های شبکه ایجاد شده با استفاده از کتابخانه Cronet توسط کلاس UrlRequest نمایش داده می شود. مفاهیم زیر برای درک چرخه عمر UrlRequest مهم هستند:

ایالات
حالت، شرایط خاصی است که درخواست در یک زمان خاص در آن قرار دارد. اشیاء UrlRequest ایجاد شده با استفاده از کتابخانه Cronet در حالت های مختلف در چرخه حیات خود حرکت می کنند. چرخه عمر درخواست شامل یک حالت اولیه و چندین حالت انتقالی و نهایی است.
روش های UrlRequest
کلاینت ها می توانند بسته به حالت، متدهای خاصی را روی اشیاء UrlRequest فراخوانی کنند. متدها درخواست را از یک حالت به حالت دیگر منتقل می کنند.
روش های Callback
با پیاده‌سازی روش‌های کلاس UrlRequest.Callback ، برنامه شما می‌تواند به‌روزرسانی‌هایی درباره پیشرفت درخواست دریافت کند. برای فراخوانی متدهای شیء UrlRequest که چرخه حیات را از حالتی به حالت دیگر می برد، می توانید متدهای callback را پیاده سازی کنید.

لیست زیر جریان چرخه عمر UrlRequest را شرح می دهد:

  1. پس از اینکه برنامه شما متد start() را فراخوانی کرد، چرخه حیات در حالت Started است.
  2. سرور می تواند یک پاسخ ریدایرکت ارسال کند که جریان را به متد onRedirectReceived() می برد. در این روش می توانید یکی از اقدامات مشتری زیر را انجام دهید:
    • ریدایرکت را با استفاده از followRedirect() دنبال کنید. این روش درخواست را به حالت Started برمی گرداند.
    • درخواست را با استفاده از cancel() لغو کنید. این روش درخواست را به متد onCanceled() می برد که در آن برنامه می تواند قبل از اینکه درخواست به حالت نهایی Canceled منتقل شود، عملیات اضافی انجام دهد.
  3. پس از اینکه برنامه تمام ریدایرکت ها را دنبال کرد، سرور سرصفحه های پاسخ را ارسال می کند و متد onResponseStarted() فراخوانی می شود. درخواست در حالت Waiting for read() است. برنامه باید متد read() را فراخوانی کند تا بخشی از بدنه پاسخ را بخواند. پس از فراخوانی read() درخواست در حالت Reading قرار می گیرد که در آن نتایج احتمالی زیر وجود دارد:
    • عمل خواندن موفقیت آمیز بود، اما داده های بیشتری در دسترس است. onReadCompleted() فراخوانی می شود و درخواست دوباره در حالت Waiting for read() قرار می گیرد. برای ادامه خواندن بدنه پاسخ، برنامه باید متد read() را دوباره فراخوانی کند. این برنامه همچنین می تواند با استفاده از روش cancel() خواندن درخواست را متوقف کند.
    • عمل خواندن با موفقیت انجام شد و داده دیگری در دسترس نیست. متد onSucceeded() فراخوانی می شود و درخواست اکنون در وضعیت نهایی Succeeded قرار دارد.
    • عمل خواندن ناموفق بود. متد onFailed فراخوانی می شود و وضعیت نهایی درخواست اکنون Failed است.

نمودار زیر چرخه حیات یک شی UrlRequest را نشان می دهد:

نمودار چرخه عمر درخواست کرونت
چرخه عمر درخواست کرونت

افسانه
نماد افسانه حالت اولیه Cronet حالت اولیه نماد افسانه حالت نهایی کرونت حالت نهایی
نماد افسانه حالت انتقالی کرونت حالت انتقالی نماد افسانه روش های برگشت به تماس Cronet روش های برگشت به تماس
نماد افسانه اقدام مشتری Cronet روش های UrlRequest