ویک لاک را آزاد کنید، ویک قفل را آزاد کنید، ویک قفل را آزاد کنید

این صفحه نحوه‌ی آزاد کردن قفل بیداری که توسط برنامه‌ی شما نگه داشته شده است را شرح می‌دهد. مهم است که به محض اینکه استفاده از برنامه تمام شد، قفل بیداری را آزاد کنید تا از خالی شدن باتری جلوگیری شود.

قفل بیدارباش فعال را آزاد کنید

برای آزاد کردن قفل بیداری فعال، متد release() آن را فراخوانی کنید. انجام این کار، درخواست شما را از CPU آزاد می‌کند.

برای مثال، کد زیر یک قفل بیداری (wake lock) دریافت می‌کند ، مقداری کار انجام می‌دهد، سپس قفل بیداری را آزاد می‌کند:

کاتلین

@Throws(MyException::class)
fun doSomethingAndRelease() {
    wakeLock.apply {
        try {
            acquire(WAKELOCK_TIMEOUT)
            doTheWork()
        } finally {
            release()
        }
    }
}

جاوا

void doSomethingAndRelease() throws MyException {
    try {
        wakeLock.acquire(WAKELOCK_TIMEOUT);
        doTheWork();
    } finally {
        wakeLock.release();
    }
}

مطمئن شوید که به محض اینکه دیگر نیازی به قفل‌های بیداری ندارید، آنها را آزاد کنید. برای مثال، اگر از قفل بیداری برای اتمام یک کار پس‌زمینه استفاده می‌کنید، حتماً به محض اتمام کار، قفل را آزاد کنید.

نکات کلیدی در مورد این کد

  • در این مثال، متد doTheWork() ممکن است یک استثنا ایجاد کند. به همین دلیل، کد، قفل بیدارباش را در بلوک finally آزاد می‌کند تا مطمئن شود که قفل بیدارباش، چه استثنا ایجاد شود و چه نشود، آزاد می‌شود. بسیار مهم است که مطمئن شوید هر قفل بیداری که تنظیم می‌کنید آزاد می‌شود، بنابراین باید هر مسیر کد ممکن را بررسی کنید تا مطمئن شوید قفل بیدارباش روی هیچ یک از آنها فعال باقی نمانده است.

  • بهتر است قفل بیدارباش را با WakeLock.acquire(long timeout) فعال کنید، که به طور خودکار قفل بیدارباش را پس از مدت زمان مشخص‌شده آزاد می‌کند. با این حال، شما همچنان باید وقتی دیگر به قفل بیدارباش نیازی ندارید، آن را صریحاً آزاد کنید تا قفل بیدارباش را بیش از حد لازم نگه ندارید.

همچنین ببینید