小米 alarmanager 失效問題 保持長鏈接

最近作一個即時通信的app,因爲即時要和服務器進行保持鏈接,發送請求. 遇到悲催的問題 小米的alarmanager 失效 而用handler 來輪詢,又發生在休眠的時候cpu中止,hanlder就掛掉了, 首先第一個方法 alarmanager 在別的手機上均可以用,就TMD的在小米手機上不能用,由於小米把api給改了,限制cpu的訪問,爲了提升省電,fuck, 沒有別的辦法了,只能從第二種方法入手,利用hanlder來保持鏈接,cpu中止後hanlder掛掉,想一想能夠從cpu入手,不讓cpu掛掉,因爲android有權限拿到cpu的喚醒鎖機制,讓cpu保持喚醒狀態當不要的時候釋放cpu便可,關鍵代碼android

/** * 保持該服務在屏幕熄滅時仍然獲取CPU時,保持運行 */ private void acquireWakeLock() { if (null == wakeLock) { PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, getClass() .getCanonicalName()); if (null != wakeLock) { System.out.println("000000000000000"+"保持運行"); wakeLock.acquire(); } } }api

/** 釋放掉cpu */服務器

private void releaseWakeLock() { 
    if (null != wakeLock && wakeLock.isHeld()) { 
        wakeLock.release(); 
        wakeLock = null; 
    } 
}
相關文章
相關標籤/搜索