הגדרת נעילה מצב שינה

אפשר להגדיר נעילת השכמה כדי שהמכשיר יישאר פעיל באופן זמני.

תלויות

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

<uses-permission android:name="android.permission.WAKE_LOCK" />

יצירה וקבלת נעילת השהיה

כדי להפעיל חסימת מצב שינה:

  1. מפעילים את PowerManager.newWakeLock() כדי ליצור נעילת השכמה. הפעולה הזו יוצרת ומגדירה אובייקט PowerManager.WakeLock אבל לא מונעת מהמכשיר לעבור למצב שינה.

  2. כדי למנוע את מעבר המכשיר למצב שינה, צריך להריץ את שיטת ה-acquire() של אובייקט חסימת מצב השינה.

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

Kotlin

val wakeLock: PowerManager.WakeLock =
    (getSystemService(POWER_SERVICE) as PowerManager).run {
        newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyClassName::MyWakelockTag").apply {
            acquire(WAKELOCK_TIMEOUT)
        }
    }

Java

PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
PowerManager.WakeLock wakeLock =
        powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyClassName::MyWakelockTag");
wakeLock.acquire(WAKELOCK_TIMEOUT);

מידע חשוב על הקוד

  • כשהקוד יוצר את אובייקט הנעילה למניעת שינה, הוא משתמש בשם המחלקה כחלק מתג הנעילה למניעת שינה. מומלץ לכלול את שם החבילה, המחלקה או השיטה כחלק מתג הנעילה של ההשכמה. כך, אם מתרחשת שגיאה, קל יותר לאתר את נעילת ההשכמה בקוד המקור. מידע נוסף זמין במאמר Name the wake lock properly.

  • WakeLock.acquire(long) מקבלת ערך של זמן קצוב לתפוגה באלפיות השנייה. המערכת מבטלת את חסימת מצב השינה אחרי פרק הזמן הזה, אם עדיין לא ביטלתם אותה.

למידע נוסף