מה בדיוק קורה כאשר אתה לסחוב אנדרואיד App מתוך רשימת היישומים האחרונים?
כאשר אתה מחליק יישום מרשימת היישומים הפועלים כעת ב- Android, מה בדיוק קורה ליישום ולנתונים? המשך לקרוא תוך כדי בדיקה.
מפגש השאלות והתשובות של היום מגיע אלינו באדיבותו של חוקר אנדרואיד - חלוקה מחודשת של Stack Exchange, קיבוץ מונחה על ידי הקהילה של אתרי אינטרנט של Q & A.
השאלה
הקורא אנדרואידאסט הקורא Eldarerathis הוא סקרן לגבי פונקציונליות להחליק app המאפשר לך למשוך את רשימת היישומים פועל באמצעות כפתור הבית ולאחר מכן להחליק אותם ימינה, קרוב לוודאי לסגור אותם:
רשימת היישומים האחרונים ב Ice Cream Sandwich הוסיפה את היכולת להחליק את האפליקציות מתוך הרשימה, ובכך ביטלה אותן לצמיתות (ועד כמה שידוע לי שזו פונקצית וניל, לא תקליטור CM / ROM מותאם אישית). התיעוד ומדגיש את הפלטפורמה אינם מופיעים כדי לכסות את under-the-hood פועל של פונקציונליות זו, אבל אני סקרן לדעת מה המערכת באמת עושה.
נוסף על הסקרנות שלי, החלטתי לעשות בדיקה מהירה: התחלתי את המוזיקה בהתקנת CM9, ואז יצאתי ממנה. לאחר מכן בדקתי את רשימת היישומים האחרונים וראיתי שזה אכן קיים (ובמצב הנכון, על פי התמונה הממוזערת). אז נכנסתי
הגדרות -> יישומים
וכוח עצר את האפליקציה מוסיקה, אבל זה עדיין היה ברשימה האחרונה, מה שמוביל אותי להאמין שזה לא קשור לתהליכים המתמשכים ברקע.הבנתי עכשיו כי מוסיקה אולי היה בחירה גרועה, אני גם נבדק עם יישום Today Today. זה הציג בעצם את אותה התנהגות, וזה נראה כאילו הוא נאלץ "relaunch" לאחר כוח לעצור (מה הגיוני) למרות התמונות הממוזערות של רשימת היישומים האחרונים לא משקף את זה (במטמון, אני מנחש?).
אז, מה באמת קורה ברמת מערכת ההפעלה בעת להחליק יישום מתוך הרשימה האחרונה? האם זה פשוט לנקות את הנתונים של היישום מתוך RAM ו אשפה לאסוף אותו, להרוס את מצב הציל?
מה בדיוק קורה כאשר אתה לסחוב את האפליקציה מהרשימה?
התשובות
אנדרואיד Enthusiast תורם אוסטין מילס מציעה כמה תובנה:
החלפת אפליקציות מתוך רשימת היישומים האחרונים היא וניל, וכן, לא מתועד היטב. זה היה הנושא של כמות סבירה של דיון בפורומים שונים של אנדרואיד ... הקונצנזוס נראה המתואר בצורה הטובה ביותר כאן כמה הערות: כי התנהגות דומה אבל לא בדיוק אותו דבר כמו סגירה של יישום - באופן כללי (עבור יישומים כי לא מגדירים מפורשת טיפול כפתור בחזרה) זה אותו הדבר כמו להכות בחזרה פעמים מספיק מתוך יישום שאתה יוצא ממנו.
הקישור יש כמה פרטים נוספים על הפרטים, אבל בסך הכל אתה יכול לחשוב על זה כמו לעזוב את היישום.
ספציפית לאפליקציית המוזיקה, אני מאמינה שזה מתחיל שירות, לכן בזמן שהמשימה עצמה (האפליקציה Music / UI) עשויה להיות סגורה, השירות ימשיך לפעול ברקע כך שהמוזיקה שלך לא תיפסק פתאום רק משום שהמשימה יש לנקות את הסיבות לניהול זיכרון. זה אולי השפיע על מה שראית.
לאחר מכן, כשהשתתף במעגל השאלות והתשובות של החיים, חזר אלדראטיס עם איזה מחקר משלו כדי לעגל את התשובה:
נראה כי מצאתי את מונחי החיפוש הקסום שהובילו להסברים מעובדי Google. באופן ספציפי, מצאתי כמה מקומות שונים שבהם Dianne Hackborn מסביר מה קורה כאשר אתה לסחוב משהו מתוך הרשימה האחרונה. הראשונה היא תגובה על אחד מהפוסטים שלה ב- Google+:
[W] קורה במיוחד כאשר אתה מחליק משם משימה האחרונה היא: (1) הורג כל רקע או תהליכים ריקים של היישום (ראה כאן מה זה אומר), ו (2) משתמשת API החדש כדי לספר את כל השירותים של היישום על המשימה מוסר כך שהוא יכול לעשות מה שהוא חושב מתאים.
היא גם מציין הערה בבלוג:
למעשה, הסרת רשומה במשימות האחרונות תהרוג את כל תהליכי הרקע הקיימים בתהליך. זה לא יוביל ישירות שירותים להפסיק, עם זאת יש API עבור אותם כדי לגלות את המשימה הוסרה כדי להחליט אם הם רוצים את זה אומר שהם צריכים להפסיק. זה כך להסרת לומר את המשימה האחרונה של יישום דואר אלקטרוני לא יגרום לו להפסיק לבדוק דואר אלקטרוני.
אם אתה באמת רוצה לעצור לחלוטין את היישום, אתה יכול ללחוץ לחיצה ארוכה על המשימות האחרונות ללכת מידע על אפליקציה, ופגע כוח לעצור שם. כוח עצור הוא להרוג מלא של היישום - כל התהליכים נהרגים, כל השירותים נעצרו, כל ההודעות הוסרו, כל אזעקות הוסרו, וכו 'האפליקציה אינה מורשית להשיק שוב עד המבוקש במפורש.
לכן, נראה שהסיכום הוא שהחלקת אפליקציה מתוך הרשימה תביא תחילה להורדת כל תהליכי הרקע עבור האפליקציה, ולאחר מכן להשתמש
onTaskRemoved
כדי ליידע את האפליקציה שמשימת הרקע הוסרה. בשלב זה זה נראה כאילו זה תלוי App כדי להחליט מה קורה, אז אני מניח שם מבחינה טכנית לא כלל קשה ומהר על מה שקורה לאפליקציה מעבר לנקודה זו.
יש לך משהו להוסיף להסבר? נשמע את ההערות. רוצה לקרוא תשובות נוספות ממשתמשים אחרים בעלי ידע טכנולוגי מתמצא? בדוק את נושא הדיון המלא כאן.