יום שישי, 15 בינואר 2010

מה הכוונה באנדרואיד?

בפעם שעברה סיפרתי לכם על הדילמה של אנדרואיד - מצד אחד, כל אפליקציה רצה ב-Process משלה, ומצד שני ניתן לשתף אפליקציות אחרות ולאפשר להן להשתמש ברכיבים שכתבת. הדרך לעשות את זה היא באמצעות אובייקטים מסוג Intent.
ל-Intent (שאני אקרא לו גם כוונה) יש מספר חלקים, כשהעיקריים הם: פעולה, קטגוריה, מידע (Data), וסוג המידע (Mime-Type). הכוונה היא האובייקט שעובר במערכת ולפיו מערכת ההפעלה של אנדרואיד מחליטה אילו רכיבים להפעיל. ההחלטה הזו מתבצעת לפי ההתאמה של ה-Intent ל-Intent Filter.
Intent Filter הוא הדרך שבה רכיב כלשהו מספר למערכת ההפעלה אילו כוונות אמורות להפעיל אותו. מוגדרות בו הפעולות שהרכיב יכול לבצע, כמו VIEW, עבור רכיבים שמאפשרים לנו לצפות בתוכן מסוג מסוים - סרטים, תמונות, קבצי שמע, או PICK, עבור רכיבים שמפשרים לנו לבחור מתוך התוכן הנ"ל. הפעלה של האפליקציה מתוך תפריט האפליקציות גם היא פעולה מסוג מסוים. פרט לפעולה אנחנו יכולים להגדיר גם את סוג התוכן שעבורו הרכיב פועל ואת ההרשאות שדרושות עבור הפעלת הרכיב.
כאשר משתמשים בכוונה, מערכת ההפעלה בודקת בכל הרכיבים הרשומים אצלה, אלו רכיבים הגדירו Intent Filter שמתאים לכוונה, ומפעיל את הרכיב/ים המתאים. יש מספר דרכים להפעיל רכיבים באנדרואיד: Broadcast, התחלת שירות (Service)  והתחלת פעילות (Activity).
כוונה שמשודרת בשידור רחב (Broadcast) משודרת לכל הרכיבים מסוג Broadcast Receiver (נדון בו בעתיד) שמוגדרים במערכת ושקיים עבורם Intent Filter מתאים.
כוונה שמשודרת כהתחלת שירות, תפנה ל-Service (גם בו נדון בעתיד) שקיים במערכת ושה-Intent Filter שלו מתאים ביותר לכוונה ששודרה.
כוונה שמשודרת כהתחלת פעילות (Activity), תמצא את הפעילות המתאימה ביותר לביצוע הכוונה ותתחיל אותה. במידה ויותר מפעילות אחת מתאימה, מערכת ההפעלה תשאל את המשתמש באיזו פעילות הוא מעוניין להשתמש. ניתן להתחיל פעילות בשתי דרכים: על מנת שהיא תרוץ, וע"מ לקבל ערך החזר ביציאה ממנה.
יש עוד ניואנסים רבים לשימוש בכוונות באנדרואיד, אולם העיקר פרוס פה לפניכם. בפוסט הבא, נתחיל לדון ברכיבים השונים של האפליקציה - Activity, Service, Broadcast Receiver ו-Content Provider.

אין תגובות:

הוסף רשומת תגובה