小米 alarmanager 失效问题 保持长连接

最近做一个即时通讯的app,由于即时要和服务器进行保持连接,发送请求. 遇到悲催的问题 小米的alarmanager 失效 而用handler 来轮询,又发生在休眠的时候cpu停止,hanlder就挂掉了, 首先第一个方法 alarmanager 在别的手机上都可以用,就TMD的在小米手机上不能用,因为小米把api给改了,限制cpu的访问,为了提高省电,fuck, 没有别的办法了,只能从第二种方法入手,利用hanlder来保持连接,cpu停止后hanlder挂掉,想想可以从cpu入手,不让cpu挂掉,由于android有权限拿到cpu的唤醒锁机制,让cpu保持唤醒状态当不要的时候释放cpu即可,关键代码

/** * 保持该服务在屏幕熄灭时仍然获取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(); } } }

/** 释放掉cpu */

private void releaseWakeLock() { 
    if (null != wakeLock && wakeLock.isHeld()) { 
        wakeLock.release(); 
        wakeLock = null; 
    } 
}

转载于:https://my.oschina.net/u/556624/blog/350749

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值