如何创建一个倒数计时器,当屏幕关闭时停止并“等待”,重新打开时恢复。安卓

Posted

技术标签:

【中文标题】如何创建一个倒数计时器,当屏幕关闭时停止并“等待”,重新打开时恢复。安卓【英文标题】:How to create a countdown timer that stops and "waits" when the screen is off, resumes when back on. Android 【发布时间】:2016-01-24 15:34:57 【问题描述】:

如何创建一个倒数计时器,它在屏幕关闭时停止并“等待”,在重新打开时恢复。

正如标题所说,如何在 android Studio 中编写一个基本的倒计时计时器,当用户关闭手机(屏幕关闭)时停止,并在屏幕重新打开时重新启动。在这方面仍然是一个完整的菜鸟,我只需要可以工作并执行此操作的基本代码。

谢谢

我已经有了一个基本的界面...

【问题讨论】:

【参考方案1】:

使用带有 Runnable 的 Handler,每秒调用一次。

Handler handler = new Handler();
int countdown = 300; // set countdown value in seconds
Runnable countdownRunnable = new Runnable() 
    @Override
    public void run() 
        countdown--;

        if(countdown == 0) 
            // countdown finished
         else 
            handler.postDelayed(this, 1000);
        
    

首先,以handler.post(countdownRunnable) 开始倒计时。在 Activity/Fragment onStop() 中,使用 handler.removeCallbacks(countdownRunnable); 从处理程序中删除可运行对象,然后使用 handler.post(countdownRunnable)onStart() 中再次添加它。

另外,不要忘记保存和恢复状态(当前倒计时值)。

【讨论】:

【参考方案2】:

正如 Nacho L. 回答的 *** 对于屏幕开关状态,您可以尝试使用 ACTION_SCREEN_ON 和 ACTION_SCREEN_OFF Intents,如这篇博文所示:[http://thinkandroid.wordpress.com/2010/01/24/handling-screen-off-and-screen-on-intents/2

【讨论】:

谢谢!有时间会复习一下

以上是关于如何创建一个倒数计时器,当屏幕关闭时停止并“等待”,重新打开时恢复。安卓的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:当倒数计时器达到 0 时执行动作

在后台运行ios应用

当手机进入空闲状态时后台服务停止

按秒倒数计时器

倒数计时器停止在后台运行

MVC 中的倒数计时器