代码之家  ›  专栏  ›  技术社区  ›  michael

Android屏幕关闭后线程出现问题

  •  0
  • michael  · 技术社区  · 15 年前

    我在做一个应用程序,在服务中监听android.intent.action.screen,然后它应该等待几秒钟并启动一个操作,我尝试过计时器调度方法、线程和处理程序后延迟方法,但所有方法似乎都失败了,它们从来没有在设备上执行过,看起来像是手机被锁定后被冻结/杀死。它可以在仿真器和连接到USB的设备上工作,但决不能只在电池上工作,这实际上是一个主要的场景。

    你知道有什么解决办法吗?

    3 回复  |  直到 15 年前
        1
  •  0
  •   Dre Sridhar    15 年前

    我现在无法测试这个(目前不在我的Android设备附近),但是…

    广播接收器到底是不是着火了?

    如果是这样的话,就在你接到电话时,你需要抓住一部分 Wake Lock 所以CPU在计时器启动前保持唤醒状态。

        2
  •  0
  •   mtmurdock    15 年前

    很有可能你的手机设置是这样的:当它插上电源后,它就不会真正地锁定或休眠(它是开发人员设置之一),并且想象仿真器的行为是一样的。因此,您要么必须覆盖手机的锁定设置,要么更改您的方法。一般规则是,当屏幕关闭时,您的活动结束。

        3
  •  0
  •   joeo    15 年前

    部分唤醒锁保持CPU运行,因此您应该在广播接收器中获取它以关闭屏幕,并在完成所做的操作后释放它。当你插入USB时,CPU会继续为USB连接服务(事实上,内核中的USB设备拥有自己的唤醒锁)。

    回答你的另一个问题,是的,甚至是后台线程。一旦所有人都处理完屏幕关闭广播,CPU就会关闭,直到有人重新打开CPU,您才能再次运行。