איך למנוע מהמכשיר להיכנס למצב שינה

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

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

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

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

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

  • האם האפליקציה שלכם צריכה להשאיר את המסך דלוק?
    • אם התשובה היא כן, אפשר לעיין במאמר המסך יישאר דלוק. יכול להיות שיש API למטרה מיוחדת שיעשה את מה שאתם צריכים. לדוגמה, אם אתם מטמיעים ממשק משתמש לשיחות טלפון, אתם יכולים להשתמש במסגרת התקשורת של Android, שמשאירה את המסך דלוק כשצריך. אם אין ממשק API למטרה מיוחדת שמתאים למצב שלכם, תוכלו להשתמש ב-API‏ keepScreenOn.
  • האם האפליקציה שלכם מפעילה שירות בחזית, ואתם צריכים לשמור על המכשיר פעיל כשהמסך כבוי בזמן שהשירות פועל?
    • אם התשובה היא לא, אין צורך להפעיל את המכשיר. אם המשתמש יהיה באינטראקציה פעילה עם האפליקציה, המכשיר יישאר במצב פעיל. אם המשתמש לא מבצע אינטראקציה עם האפליקציה ואתם לא מפעילים שירות בחזית, כדאי לאפשר למכשיר לעבור למצב השהיה במקרה הצורך. אם אתם רק רוצים לוודא שחלק מהעבודה מתבצעת בזמן שהמשתמש לא נמצא באפליקציה, תוכלו לעיין במסמכי העזרה בנושא משימות ברקע כדי למצוא את האפשרות הטובה ביותר.
    • אם התשובה היא כן, קודם צריך לוודא שאתם באמת צריכים להשתמש בשירות בחזית. בהתאם למצב שלכם, יכול להיות שיש ממשק API למטרה מיוחדת שתוכלו להשתמש בו כדי להשיג את הצורך שלכם במקום בשירות בחזית. מידע על הנושאים האלה זמין במסמכי העזרה של שירותי החזית. לדוגמה, אם אתם צריכים לעקוב אחרי המיקום של המשתמש, יכול להיות שתוכלו להשתמש ב-Geofencing API במקום בשירות location בחזית.
  • האם השהיית המכשיר בזמן שהשירות בחזית פועל והמסך כבוי תזיק לחוויית המשתמש? (לדוגמה, אם אתם משתמשים בשירות שפועל בחזית כדי לעדכן התראות, חוויית המשתמש לא תיפגע אם המכשיר יושעה).
    • אם הערך הוא No, אין להשתמש ב-wakelock. הפעולה תתחדש באופן אוטומטי ברגע שהמשתמש יבצע פעולה במכשיר, וכך יבטל את ההשעיה.
    • אם התשובה היא כן, יכול להיות שתצטרכו להשתמש במנעול התעוררות. עם זאת, עדיין כדאי לבדוק אם אתם כבר משתמשים ב-API או מבצעים פעולה שמצהירה על נעילת התעוררות בשמכם, כפי שמתואר בקטע פעולות שמשאירות את המכשיר במצב פעיל.

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

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

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

למידע נוסף