PracticU

Understanding Services

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA › Understanding Services
מילון מושגים:
רכיב - יחידת בניין עצמאית וניתנת לשימוש חוזר בתוך מערכת או ממשק משתמש, שאחראית על חלק מוגדר מהתפקוד.
שירות - תוכנה שרצה ברקע ומספקת פונקציונליות לרכיבים אחרים, לרוב ללא ממשק משתמש, ומופעלת אוטומטית עם המערכת.
Intent - ב-Android, אובייקט הודעה שמבקש פעולה, למשל מעבר בין מסכים או הפעלת רכיב אחר.
Activity - ב-Android, רכיב שמייצג מסך יחיד של האפליקציה שאיתו המשתמש מתקשר.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
תהליכון - יחידת ביצוע בתוך תהליך, המאפשרת להריץ כמה מהלכים במקביל ולחלוק את אותו זיכרון.

Understanding Services
פותחים נושא חדש, Services: רכיב שאפשר להפעיל מהאפליקציה אבל שרץ בנפרד ממנה. השיעור מסביר את הרעיון, את שני סוגי השירותים ואת אפשרויות ההפעלה מחדש.
איך זה עובד
1. מה זה Service: רכיב שמופעל על ידי Intent, בדיוק כמו Activity, ואפשר להעביר לו מידע דרכו. אפשר להגדיר שיימות כשהאפליקציה נסגרת או שיופעל מחדש ויימשך ברקע. דוגמאות: התראות מ-WhatsApp כשהאפליקציה סגורה, או שעון מעורר שממשיך לצלצל. שירות יכול לבצע חישובים, גישה לאינטרנט, פעולות במכשיר, הצגת התראה ועוד.
2. Service רגיל: מחלקה שיורשת מ-Service, מיועדת לפעולות ארוכות (Long Running Tasks). הוא רץ על ה-thread הראשי של האפליקציה, ולכן קוד בתוכו חוסם אותה. חשוב לפתוח בתוכו thread נפרד. עוצרים אותו בקריאה ל-stopSelf מתוך השירות.
3. IntentService: יורש מ-Service, מיועד לפעולות קצרות (Short Running Tasks) ורץ על thread נפרד, כך שהוא פועל במקביל לאפליקציה. ה-thread משרת את כל ה-IntentService של האפליקציה, ולכן כמה כאלה לא ירוצו במקביל זה לצד זה. הוא נעצר אוטומטית כשהקוד שלו מסתיים.
4. ערכי הפעלה מחדש: START_STICKY: כשהאפליקציה מסתיימת השירות מופעל מחדש וממשיך ברקע, אבל בלי ה-Intent המקורי (ברירת המחדל של Service). START_REDELIVER_INTENT: מופעל מחדש וכן מקבל את ה-Intent האחרון. START_NOT_STICKY: השירות מסתיים יחד עם האפליקציה (ברירת המחדל של IntentService).
5. שינוי ברירות המחדל: אפשר להגדיר ל-Service רגיל START_NOT_STICKY או START_REDELIVER_INTENT, ול-IntentService START_STICKY או START_REDELIVER_INTENT.
בשיעורים הבאים יוצרים Service ו-IntentService שפועלים במקביל לאפליקציה ובנפרד ממנה.
השיעור הבא בקורס: Create Service

פרקי ההרצאה: Understanding Services

  1. 00:00

    מהו Service באנדרואיד

  2. 01:02

    דוגמאות לסרוויס שרץ ברקע

  3. 02:02

    Service למשימות ארוכות ותרד נפרד

  4. 03:00

    IntentService למשימות קצרות

  5. 03:40

    מצבי Sticky ו-Non-Sticky

  6. 04:36

    הקבוע Redeliver Intent

תמלול ההרצאה: Understanding Services

הטקסט המלא של הדקות הראשונות בהרצאה «Understanding Services» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    אנחנו מגיעים לנושא חדש שנקרא Services. בואו קודם כל נבין מה זה Service. Service זה רכיב שאנחנו יכולים להריץ מתוך האפליקציה שלנו, אבל שרץ בנפרד לגמרי מהאפליקציה בתוך המכשיר.

  2. 00:23

    Service מופעל על ידי אובייקט Intent. בדיוק כמו שאנחנו מפעילים Activity על ידי Intent, ככה אנחנו מפעילים Service על ידי Intent. דרך האינטנט הזה אנחנו יכולים להעביר לסרוויס מידע לצורך הפעולה שלו.

  3. 00:40

    סרוויס יכול להיות מוגדר כך שאם האפליקציה שלנו נסגרת, אוטומטית הסרוויס מת, ואנחנו יכולים להגדיר אותו שאם האפליקציה שלנו נסגרת, הסרוויס מופעל מחדש וממשיך לרוץ ברקע אפילו שהאפליקציה נסגרת.

  4. 00:58

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

  5. 01:28

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

  6. 01:45

    יש שני סוגים של סרוויסס. הסוג הראשון נקרא פשוט סרוויס. הסוג השני נקרא אינטנט סרוויס. כל אחד מהם מיוצג על ידי מחלקה סרוויס ומחלקה אינטנט סרוויס.

  7. 02:00

    אז בואו נראה מה ההבדלים ביניהם. ראשית סרוויס. סרוויס זה מחלקה שאנחנו בונים, שיורשת מהמחלקה סרוויס. סרוויס מיועד לביצוע פעולות שלוקחות הרבה זמן, מה שנקרא Long Running Tasks.

  8. 02:18

    אם יש לנו פעולה שלוקחת הרבה זמן במהלך ההיא אפליקציה, סרוויס זה יהיה הרכיב הנכון לביצוע הפעולה הזאת. סרוויס רץ תמיד על ה-thread הראשי של האפליקציה, לכן אם אנחנו כותבים בתוכו את הקוד שלנו, הקוד הזה בעצם חוסם את ביצוע האפליקציה.

  9. 02:38

    לכן מאוד חשוב, לפתוח בתוך הסרוויס Thread נפרד בכדי לבצע את הפעולות שלנו בתוך ה-Thread הנפרד הזה, וכך לא לחסום את פעילות האפליקציה. בכדי לעצור סרוויס אנחנו צריכים לקרוא לפונקציה Stop Self מתוך הסרוויס עצמו.

  10. 02:57

    Intent Service מחלקה שאנחנו בונים שיורשת מהמחלקה Intent Service. המחלקה Intent Service יורשת מ-Service. Intent Service מיועד לביצוע פעולות קצרות, לאורט ראנינג טסקס.

  11. 03:14

    אינטנט סרוויס רץ על ת'רד נפרד מהת'רד הראשי של האפליקציה, לכן הוא יכול לבצע פעולות במקביל לפעולה של האפליקציה, אבל הת'רד הנפרד הזה משרת את כל האינטנט סרוויס הזה שיש לנו באפליקציה, ולכן אם יש לנו כמה כאלה, הם בינם לבין עצמם לא יוכלו לרוץ במקביל.

  12. 03:38

    אינטנט סרוויס עוצר אוטומטית ומפסיק את הפעילות שלו, ברגע שהקוד שנתנו לו לבצע מסתיים. יש מונח שנקרא Sticky Service ומונח שנקרא Non-Sticky Service.

  13. 03:54

    בואו נראה מה הם המונחים האלה. כל פעם שאנחנו מפעילים Service וגם Intent Service, אנחנו יכולים להגדיר אותם כאחד מהקבועים הבאים.

  14. 04:04

    Start Sticky, Start Sticky אומר שכאשר האפליקציה שלנו מסתיימת, אוטומטית הסרוויס שלנו מופעל מחדש וממשיך לחיות ברקע, אבל הוא לא מקבל את האינטנט שהפעיל אותו בפעם הראשונה.

  15. 04:23

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

  16. 04:38

    סטארט סטיקי זה ערך ברת המחדל של סרוויס, לא של Intent Service. הקבוע הבא נקרא Start Redeliver Intent. זה אומר שכאשר האפליקציה מסתיימת, אוטומטית הסרוויס מופעל מחדש ומקבל את האינטנט האחרון שהפעיל אותו, כך שאם יש לנו מידע שהעברנו באינטנט הזה,

לקורס המלא: קורס פיתוח אפליקציות לאנדרואיד

ההרצאה הקודמת: Notification Invoked from Broadcast Receiver

ההרצאה הבאה: Create Service

הרצאות קשורות מקורסים אחרים

  • GCP Services
  • First services
  • Sites and Services
  • לינוקס Services או Daemons - חלק 1

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס פיתוח אפליקציות - לאייפון iPhone iOS - ב-Swift-Xcode
  • קורס פלאטר - Flutter - שפת DART של גוגל למובייל - פיתוח אפליקציות לאנדרואיד ואייפון
  • קורס PhoneGap - פיתוח אפליקציות לאנדרואיד ואייפון