1 of 29

תהליך אסינכרוני

הוא תהליך המתבצע ברקע

AsyncTask

(אחד מאפשרויות לקיים תהליך אסינכרוני)

2 of 29

A – syn – chrony

לא מתוזמן עם משהו אחר

)עם תהליך ראשי)

AsyncTask

לא

ביחד, בהתאים

זמן

3 of 29

לביצוע AsyncTask

יש לבנות מחלקה נפרדת

(אפשר ואפילו נוח כמחלקה פנימית)

היורשת מ-AsyncTask

מחלקה חייבת להכיל לפחות פעולה אחת:

"מה לבצע ברקע"

AsyncTask

4 of 29

תהליך ראשי

("זרם GUI")

מאפשר

גישה

למרכיבים

זימון תהליך רקע

פעולה

doInBackground()

AsyncTask

5 of 29

פעולה

doInBackground()

  • מתבצעת באופן אוטומטי מיד אחר זימן מחלקה שמכילה אך ורק תהליך רקע
  • אין ממנה גישה לרכיבים של GUI (כולל, למשל, הפעלת Toast)
  • מיד עם סיום הפעולה מסתיים גם תהליך רקע

AsyncTask

6 of 29

בגלל של-AsyncTask

אין גישה לרכיבים של ממשק המשתמש,

עלולה להיווצר תחושה

"לא קורה כלום", "משהו תקועה באפליקציה"...

לכן מאוד מקובל להפעיל לפני ביצוע AsyncTask

רכיב עם אנימציה

AsyncTask

7 of 29

על מנת לעשות שימוש בAsyncTask-

ידידותי יותר (למשתמש!)

אפשר בנוסף לפעולה doInBackground

להוסיף למחלקה עוד שתי פעולות:

  • מה לבצע לפני doInBackground
  • מה לבצע אחרי doInBackground

AsyncTask

8 of 29

קודם כל

בסוף

עקרי

AsyncTask

9 of 29

על מנת לקבל עדכונים בזמן הביצוע

של doInBackground()

קיימת אפשרות להשתמש

בעוד שתי פעולות למחלקה אסינכרונית:

  • "בקשה" להצגת עדכונים
  • "הצגה" של עדכונים

אז שוב מקבלים גישה ל-GUI

AsyncTask

10 of 29

יציאות קצרות:

הם לא עוצרות(!) ביצוע תהליך רקע!

AsyncTask

11 of 29

AsyncTask

12 of 29

בכותרת של המחלקת AsyncTask

מציינים שלושה סוגים:

  • סוג הפרמטרים הנשלחים בזימון למחלקה
  • סוג הנתונים אותם רוצים לייצר תוך כדי ביצוע המחלקה (בפעולה doInBackground)
  • סוג הנתונים שאמורים להתפרסם כתוצאה

לא מדובר במשתנים!

AsyncTask

13 of 29

מקובל למקם את הפעולות

בתוך מחלקה אסינכרונית לפי "סדר הגיוני"

AsyncTask

14 of 29

דוגמאות

AsyncTask

15 of 29

מעתיקים קובץ

מתיקיה raw

לתיקיה פנימית

העתקת קובץ (offline)

AsyncTask

16 of 29

העתקת קובץ (offline)

AsyncTask

17 of 29

העתקת קובץ (offline)

לא מקבלת שום פרמטר

לא מציגה מידע תוך כדי ביצוע

לא מחזירה נתונים

AsyncTask

18 of 29

העתקת קובץ (offline)

AsyncTask

19 of 29

העתקת קובץ (offline)

AsyncTask

20 of 29

העתקת קובץ (offline)

זימון מחלקה

בלי פרמטרים

תוצאה

AsyncTask

21 of 29

קריאת קובץ (online)

אישור גישה לאינטרנט

ב-AndroidManifest

כתובת הקובץ לקריאה

AsyncTask

22 of 29

קריאת קובץ (online)

יצירת עצם מסוג "מחלקה אסינכרונית

זימון המחלקה אסינכרונית כולל העברת פרמטר מסוג "מחרוזת" (כתובת")

AsyncTask

23 of 29

קריאת קובץ (online)

מקבלת פרמטר מסוג String

מציגה מידע תוך כדי ביצוע בעזרת ערך מסוג Integer

לא מחזירה נתונים

AsyncTask

24 of 29

העתקת קובץ (online)

פעולה לפני ביצוע אסינכרוני (יש גישה לממשק!)

AsyncTask

25 of 29

העתקת קובץ (online)

בכותרת הפעולה "מוציאים" את הפרמטר הנשלח

AsyncTask

26 of 29

העתקת קובץ (online)

הופכים מחרוזת לכתובת של ממש (URL)

יוצרים חיבור לכתובת (קובץ)

פותחים "ערוץ גישה וזרימה" לכתובת (קובץ)

AsyncTask

27 of 29

העתקת קובץ (online)

בכל סיבוב מבצעים

"יציאה זמנית"

ל"פעולת דיווח"

AsyncTask

28 of 29

העתקת קובץ (online)

"פעולת דיווח"

(יש לה גישה לממשק!)

ממנה הוזרים (אוטומטי)

לפעולה doInBackground

AsyncTask

29 of 29

העתקת קובץ (online)

פעולה אחרי ביצוע אסינכרוני (יש גישה לממשק!)

AsyncTask