如何创建在打ze模式和省电模式下均可使用的PhoneStateListener?

时间:2019-05-15 13:23:50

标签: java android phone-state-listener android-doze

当设备进入打ze模式或省电模式时,我的PhoneStateListener停止工作。另外,我需要在设备重启时注册PhoneStateListener。我不想使用BroadcastReceiver,因为不再建议使用它,请参见https://developer.android.com/about/versions/oreo/background#broadcasts

1 个答案:

答案 0 :(得分:1)

我不认为此时不建议使用BroadcastReceiver是正确的定义,它只是有更多limitations,例如为清单中的隐式广播和根据docs注册广播接收器:

  
      
  • 应用程序可以继续在清单中注册显式广播
  •   
  • 应用程序可以在运行时使用Context.registerReceiver()来为任何广播(无论是隐式的还是显式的)注册接收器。
  •   

打ze模式几乎没有restrictions,但是它提供了一种解决方案,可以使用AlarmManager在打1模式和省电模式下触发警报:

  

如果您需要设置在打ze睡时触发的警报,请使用setAndAllowWhileIdle()setExactAndAllowWhileIdle()

您应该大约setAndAllowWhileIdlesetExactAndAllowWhileIdle并确定哪一个与您相关。