待机灭屏状态下,接收到短信点亮屏幕,无操作5秒或者10秒钟灭屏是如何处理的?
处理流程是在怎样的呢?
多谢指点。

解决方案 »

  1.   

    收到短信的server onCreate的时候 mWakeLock 复赋值PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    mWakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
    | PowerManager.ACQUIRE_CAUSES_WAKEUP
    | PowerManager.ON_AFTER_RELEASE, TAG);在短信received的时候mWakeLock.acquire(5000);5000就是5秒.不知道这个是否是你需要的,如果是要更深的研究这几个函数怎么工作的,那估计得再研究下...
      

  2.   

    多谢。
    mWakeLock.acquire(5000); 这个是占用cpu的时间吧?过了这个时间就释放cpu锁了,不一定会灭屏吧?
      

  3.   

    我曾经试过把调用acquire函数加参数5000ms,但不起作用。
    acquire(long timeout)函数,在指定的timeout时间到时候,执行mReleaser的run函数,在run函数中又执行了release()函数,release()函数又调用了release(int flags)函数,可能是在release(int flags)函数中
    (!mRefCounted || --mCount == 0)条件不满足,没有执行mService.releaseWakeLock(mToken, flags);导致的,还需要再确认下。
      

  4.   


    2L的操作是一个屏幕唤醒并保持操作,当不再需要持续唤醒时,也就是允许正常休眠时,需要把该锁释放。如果需要在释放WAKE_LOCK后,5~10秒内自动锁屏,需要设置系统自动锁屏时间为5~10秒之间的一个确定值。不同的机型自动锁屏时间设置效果可能会不一样。
      

  5.   

    自动灭屏的时间为5秒或者10秒:
     暂时没有发现什么好办法,建议LZ查下是否存在使手机立即进入休眠状态的API.来短信后屏幕点亮但并没有解锁:
    如果不解锁,使用FULL_WAKE_LOCK亮屏之后,需要关闭这个锁,然后换一个不亮屏的锁PARTIAL_WAKE_LOCK,不然不会灭屏的。主要hold住FFULL_WAKE_LOCK,屏幕就不会灭。
      

  6.   

    现在的sms中获取锁的代码用的就是PARTIAL_WAKE_LOCK,但是不起作用。
    同样的代码在另外一个版本上就起作用,与系统设置的屏幕超时无关,接收到短信后10秒就会灭屏,可能还是framework层的处理有问题。