בחירת ה-API הנכון כדי שהמכשיר יישאר פעיל

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

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

בחירת הטכנולוגיה המתאימה

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

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

  • האם האפליקציה צריכה להשאיר את המסך דלוק?
    • אם התשובה היא כן, אפשר לעיין במאמר המסך נשאר דולק. יכול להיות שיש API למטרה מיוחדת שעושה את מה שאתם צריכים. לדוגמה, אם אתם מטמיעים ממשק משתמש לשיחות טלפון, אתם יכולים להשתמש במסגרת Android telecom, ששומרת על המסך דולק כשצריך. אם אין API למטרה מיוחדת שמתאים למצב שלכם, אתם יכולים להשתמש ב-keepScreenOnAPI.
  • האם האפליקציה שלך מפעילה שירות בחזית, ואתם צריכים שהמכשיר לא יעבור למצב שינה כשהמסך כבוי בזמן שהשירות פועל?
    • אם התשובה היא לא, לא צריך למנוע את מעבר המכשיר למצב שינה. אם המשתמש נמצא באינטראקציה פעילה עם האפליקציה, המכשיר יישאר פעיל. אם המשתמש לא מקיים אינטראקציה עם האפליקציה שלכם ואתם לא מפעילים שירות חזיתי, אתם צריכים לאפשר למכשיר לעבור למצב השהיה כשצריך. אם אתם רק רוצים לוודא שחלק מהעבודה יתבצע בזמן שהמשתמש לא נמצא באפליקציה, כדאי לעיין במסמכי התיעוד בנושא משימות ברקע כדי למצוא את האפשרות הטובה ביותר.
    • אם התשובה היא כן, קודם צריך לוודא שבאמת יש צורך להשתמש בשירות פעיל. בהתאם למצב שלכם, יכול להיות שיש API למטרה מיוחדת שתוכלו להשתמש בו כדי להשיג את מה שאתם צריכים במקום שירות שפועל בחזית. מידע על השירותים האלה זמין במסמכי התיעוד של Foreground Service. לדוגמה, אם אתם צריכים לעקוב אחרי מיקום המשתמש, יכול להיות שתוכלו להשתמש ב-geofencing API במקום בשירות location שפועל ברקע.
  • האם זה יפגע בחוויית המשתמש אם המכשיר יושעה בזמן שהשירות הפועל בחזית פועל ומסך המכשיר כבוי? (לדוגמה, אם משתמשים בשירות שפועל בחזית כדי לעדכן התראות, לא תהיה חוויית משתמש גרועה אם המכשיר יושעה).
    • אם התשובה היא לא, אל תשתמשו בנעילת השכמה. הפעולה מתחדשת באופן אוטומטי ברגע שהמשתמש מפעיל את המכשיר, ומוציא אותו ממצב השעיה.
    • אם התשובה היא כן, יכול להיות שתצטרכו להשתמש בנעילת השהיה. עם זאת, כדאי לבדוק אם אתם כבר משתמשים ב-API או מבצעים פעולה שמצהירה על נעילת השהיה בשמכם, כמו שמוסבר במאמר פעולות שמונעות את כיבוי המכשיר.

פעולות שמשאירות את המכשיר פעיל

אם האפליקציה שלכם מבצעת אחת מהפעולות הבאות, אתם לא צריכים להגדיר בעצמכם נעילת השכמה: כל הפעולות וממשקי ה-API הבאים שומרים על המכשיר במצב פעיל.

  • אם מפעילים אודיו, מערכת האודיו מגדירה ומנהלת את נעילת ההשכמה בשבילכם, כך שאין צורך לעשות זאת בעצמכם.
  • אם אתם משתמשים בספריות או בממשקי API לתזמון משימות, כמו WorkManager, JobScheduler או DownloadManager, המערכת או הספרייה מקבלות נעילת השהיה שמשויכת לאפליקציה שלכם.
  • אם אתם משתמשים ב-Media3 ExoPlayer, אתם יכולים להשתמש ב-ExoPlayer.setWakeMode() כדי שהנגן יגדיר בשבילכם נעילת השהיה.
  • חלק מהחיישנים במכשיר הם חיישני התעוררות. אפשר להשתמש ב-SensorManager כדי שהחיישנים האלה יעוררו את המכשיר כשיש להם נתונים לדיווח. כדי לבדוק אם חיישן הוא חיישן להוצאה ממצב שינה, מתקשרים אל Sensor.isWakeUpSensor.
  • אם מגדירים שעון מעורר, המכשיר יוצא ממצב שינה כשהשעון המעורר מצלצל, גם אם האפליקציה לא פועלת.

למידע נוסף