Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 电池碰撞:后台服务+;广播接收器与AlarmManager每分钟轮询?_Android_Performance_Android Intent_Battery_Processing Efficiency - Fatal编程技术网

Android 电池碰撞:后台服务+;广播接收器与AlarmManager每分钟轮询?

Android 电池碰撞:后台服务+;广播接收器与AlarmManager每分钟轮询?,android,performance,android-intent,battery,processing-efficiency,Android,Performance,Android Intent,Battery,Processing Efficiency,我正在编写一个应用程序,它需要检测屏幕何时从背景打开或关闭(精度约为1分钟)。理想情况下,我只是静态注册Intent.ACTION\u SCREEN\u ON和Intent.ACTION\u SCREEN\u OFF,但不幸的是,这是不允许的 这就给我留下了两个不太好的选择——实际上是非常可怕的选择(除非有什么我不知道的,很可能是): 运行一个无所不在的服务+广播接收器,该接收器可注册和关闭意图或 使用AlarmManager计划每分钟运行一些代码,并检查显示器是否在 #1不是很好,因为它可能会

我正在编写一个应用程序,它需要检测屏幕何时从背景打开或关闭(精度约为1分钟)。理想情况下,我只是静态注册Intent.ACTION\u SCREEN\u ON和Intent.ACTION\u SCREEN\u OFF,但不幸的是,这是不允许的

这就给我留下了两个不太好的选择——实际上是非常可怕的选择(除非有什么我不知道的,很可能是):

  • 运行一个无所不在的服务+广播接收器,该接收器可注册和关闭意图或
  • 使用AlarmManager计划每分钟运行一些代码,并检查显示器是否在
  • #1不是很好,因为它可能会被杀死,它会浪费内存,它需要在启动时运行,而在SD卡上安装时,启动不起作用,等等。。这个名单还有很多

    #2不是很好,因为它不太精确而且。。。让我们面对现实吧——投票几乎从来都不是正确的答案

    但最糟糕的是,它们都会对电池寿命产生负面影响。这实际上是最重要的因素

    TL;博士
    在电池寿命影响方面,两个坏处中哪一个比较小?

    我不是android开发人员(但这会很有趣),但在阅读AlarmManager类概述时,它说如果应用程序尚未运行,它将定期启动应用程序。这不是轮询,因为代码没有运行,也不会影响性能或使处理器处于唤醒状态(消耗能量)。我确信AlarmManager类本身也没有轮询

    您还可以考虑暂停应用程序进程,并定期将其唤醒。启动流程通常是一项昂贵的操作。尽管挂起应用程序不会消耗处理器资源(从而影响功耗),但它确实会占用内存