package com.androsz.util; import android.content.Context; import android.os.PowerManager; /** * Hold a wakelock that the whole process must use. Otherwise, interferences * happen. */ public class SharedWakeLock { private static PowerManager.WakeLock sCpuWakeLock; public synchronized static void acquire(final Context context, int wakeLockFlags) { createWakeLock(context, wakeLockFlags); sCpuWakeLock.acquire(); } public synchronized static void acquire(final Context context, int wakeLockFlags, int releaseAfter) { createWakeLock(context, wakeLockFlags); sCpuWakeLock.acquire(releaseAfter); } private static void createWakeLock(final Context context, int wakeLockFlags) { final PowerManager pm = (PowerManager) context .getSystemService(Context.POWER_SERVICE); release(); sCpuWakeLock = pm.newWakeLock(wakeLockFlags, SharedWakeLock.class.getSimpleName()); sCpuWakeLock.setReferenceCounted(false); } public static boolean isHeld() { return sCpuWakeLock != null && sCpuWakeLock.isHeld(); } public static void release() { if (isHeld()) { sCpuWakeLock.release(); } } }