מחזור החיים של בקשה ב-Cronet

במאמר הזה מוסבר על מחזור החיים של בקשות שנוצרו באמצעות Cronet ואיך לנהל אותן באמצעות שיטות הקריאה החוזרת שסופקו על ידי הספרייה.

סקירה כללית על מחזור החיים

בקשות רשת שנוצרו באמצעות ספריית Cronet מיוצגות על ידי המחלקה UrlRequest. חשוב להבין את המושגים הבאים כדי להבין את מחזור החיים של UrlRequest:

מדינות
מצב הוא התנאי הספציפי שבו הבקשה נמצאת בזמן מסוים. אובייקטים מסוג UrlRequest שנוצרו באמצעות ספריית Cronet עוברים בין מצבים שונים במחזור החיים שלהם. מחזור החיים של הבקשה כולל מצב ראשוני, ומצבי מעבר ומצבים סופיים רבים.
UrlRequest אמצעי תשלום
לקוחות יכולים לקרוא לשיטות ספציפיות באובייקטים של UrlRequest בהתאם למצב. השיטות מעבירות את הבקשה ממצב אחד למצב אחר.
Callback אמצעי תשלום
הטמעה של שיטות מהסיווג UrlRequest.Callback מאפשרת לאפליקציה לקבל עדכונים לגבי התקדמות הבקשה. אפשר להטמיע את שיטות הקריאה החוזרת כדי לקרוא לשיטות של אובייקט UrlRequest שמקבלות את מחזור החיים ממצב אחד למצב אחר.

ברשימה הבאה מתואר התהליך של מחזור החיים של UrlRequest:

  1. מחזור החיים נמצא במצב Started אחרי שהאפליקציה קוראת לשיטה start().
  2. השרת יכול לשלוח תגובה להפניה אוטומטית, שמעבירה את התהליך לשיטה onRedirectReceived(). בשיטה הזו, אפשר לבצע אחת מהפעולות הבאות בצד הלקוח:
    • עוקבים אחרי ההפניה לכתובת אחרת באמצעות followRedirect(). השיטה הזו מחזירה את הבקשה למצב Started.
    • לבטל את הבקשה באמצעות cancel(). השיטה הזו מעבירה את הבקשה לשיטה onCanceled(), שבה האפליקציה יכולה לבצע פעולות נוספות לפני שהבקשה עוברת למצב הסופי בוטלה.
  3. אחרי שהאפליקציה מבצעת את כל ההפניות האוטומטיות, השרת שולח את כותרות התגובה והשיטה onResponseStarted() נקראת. הבקשה במצב המתנה לקריאה(). האפליקציה צריכה להפעיל את השיטה read() כדי לנסות לקרוא חלק מגוף התשובה. אחרי שקוראים ל-read(), הבקשה נמצאת במצב קריאה, ויש לה את התוצאות האפשריות הבאות:
    • פעולת הקריאה בוצעה בהצלחה, אבל יש עוד נתונים זמינים. הפונקציה onReadCompleted() מופעלת והבקשה חוזרת למצב בהמתנה לקריאה(). האפליקציה צריכה להפעיל שוב את השיטה read() כדי להמשיך לקרוא את גוף התגובה. האפליקציה יכולה גם להפסיק לקרוא את הבקשה באמצעות השיטה cancel() .
    • פעולת הקריאה הושלמה בהצלחה, ואין יותר נתונים זמינים. השיטה onSucceeded() מופעלת והבקשה נמצאת עכשיו במצב הסופי Succeeded.
    • הפעולה של הקריאה נכשלה. השיטה onFailed מופעלת והמצב הסופי של הבקשה הוא נכשל.

התרשים הבא מציג את מחזור החיים של אובייקט UrlRequest:

תרשים של מחזור החיים של בקשה ב-Cronet
מחזור החיים של בקשת Cronet

Legend
סמל של מצב התחלתי של Cronet מצב התחלתי סמל של מקרא לסטטוס הסופי של Cronet סטטוס סופי
סמל של מקרא למצב מעבר ב-Cronet מצב מעבר סמל של מקרא לשיטות קריאה חוזרת של Cronet שיטות קריאה חוזרת
סמל מקרא של פעולת לקוח Cronet UrlRequest אמצעי תשלום