手机休眠时停止定时器

Posted

技术标签:

【中文标题】手机休眠时停止定时器【英文标题】:Stopping Timer when phone sleeps 【发布时间】:2012-08-23 01:16:04 【问题描述】:

我正在我的应用程序的第一个屏幕上启动计时器。问题出在手机进入睡眠状态时。 Timer 触发的动作无法访问网络,导致应用崩溃。 我的解决方案是在手机进入睡眠状态时停止/重新启动计时器。

那么有没有我可以从 Application 类中实现的方法,例如 onLowMemory() 或 onTerminate()。 onSleep() 和 onWake() 会很好:)

【问题讨论】:

【参考方案1】:

在您的第一个屏幕的Activity 代码中,您可以覆盖onStoponPause 并在那里取消您的计时器。选择最适合您的目的。

然后,您可以在调用 onResumeonStart 时重新启动计时器。

【讨论】:

即使我在不​​同的活动中,这也能工作吗?还是我必须覆盖每个 Activity 的 onResume/start。 您可以制作一个静态计时器,您可以通过Application 上下文访问该计时器。如果您只有第一个屏幕上的计时器,那么我猜这是您唯一需要这样做的地方。 好的,我会走静态路线。感谢您的快速答复。 我仍然有问题,我无法停止计时器 --' 它是静态的,我正在以静态方式访问它,但是当我执行 .cancel() 和 .purge()计时器内的 Log.w() 仍然显示在 logcat 上。怎么了? 如果您发布代码的 sn-p,我将编辑我的答案并提出一些建议

以上是关于手机休眠时停止定时器的主要内容,如果未能解决你的问题,请参考以下文章

Android 后台任务执行

手机休眠,js倒计时停止

手机端黑屏时定时器无法执行

Android定时的基本实现

C# 为啥定时器会自动停止

使用adb命令或shell命令定时重启手机或关机