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

     2023-02-16     242

关键词:

【中文标题】如何创建一个倒数计时器,当屏幕关闭时停止并“等待”,重新打开时恢复。安卓【英文标题】: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

【讨论】:

谢谢!有时间会复习一下

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

...粘性后台服务。基本上它跟踪时间,它是一个自定义时钟计时器。但是一旦设备进入空闲状态(当手机屏幕关闭时),计时器(后台服务)也会暂停。我应该怎么做才能让它在屏幕关闭的情况下始终保持运行?publicclassTime 查看详情

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

】Flutter:当倒数计时器达到0时执行动作【英文标题】:Flutter:Performanactionwhenacountdowntimerreaches0【发布时间】:2020-04-1520:36:26【问题描述】:我在Flutter中创建了一个显示倒数计时器的屏幕。我能够播放、暂停和重新启动计时器,... 查看详情

在后台运行ios应用

...是iOS编程的新手,我设法创建了一个倒计时到0的倒计时计时器,当计时器到达0时,会弹出UIAlertView说计时器已完成。虽然我的问题是当我最小化应用程序或屏幕进入睡眠状态时,我的倒数计时器停止并且我的警报不会出现,直... 查看详情

按秒倒数计时器

】按秒倒数计时器【英文标题】:pushsecondstocountdowntimer【发布时间】:2012-06-2720:20:20【问题描述】:我创建了一个显示在标签上的倒数计时器,现在我想添加一个功能,当用户按下按钮时,它将向倒数计时器添加30秒。我试图自... 查看详情

如何在 JavaScript 中编写倒数计时器? [关闭]

】如何在JavaScript中编写倒数计时器?[关闭]【英文标题】:HowtowriteacountdowntimerinJavaScript?[closed]【发布时间】:2014-01-0406:46:58【问题描述】:只是想问一下如何创建最简单的倒数计时器。网站上会有一句话说:“注册将在05:00分钟... 查看详情

MVC 中的倒数计时器

】MVC中的倒数计时器【英文标题】:CountdownTimerinMVC【发布时间】:2012-11-0807:35:12【问题描述】:我正在使用code在_Layout.cshtml页面中显示倒数计时器。但是当我从一个页面移动到另一个页面时,计时器会在新页面加载时再次启动... 查看详情

视图关闭时如何停止视图模型中的调度计时器?

】视图关闭时如何停止视图模型中的调度计时器?【英文标题】:Howtostopadispatchtimerintheviewmodelwhentheviewisclosed?【发布时间】:2022-01-2009:34:18【问题描述】:当视图关闭时,我想关闭ViewModel中的计时器。我的代码:MainWindow.xaml.cs:... 查看详情

当另一个正在运行时,如何暂停一个倒数计时器?

】当另一个正在运行时,如何暂停一个倒数计时器?【英文标题】:HowcanIpauseoneCountDownTimerwhenanotheroneisrunning?【发布时间】:2017-02-2621:06:21【问题描述】:我的程序中有两个CountDownTimer:一个4秒,一个24秒。我希望较长的计时器... 查看详情

Android:当活动死亡时,计时器被孤立

】Android:当活动死亡时,计时器被孤立【英文标题】:Android:WhenActivityDies,TimerisOrphaned【发布时间】:2012-11-2916:06:22【问题描述】:我是一个相对的Android新手,正在编写一个计时器应用程序。我正在使用一个自定义倒数计时器类... 查看详情

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

】倒数计时器停止在后台运行【英文标题】:Countdowntimerstopsrunninginbackground【发布时间】:2013-01-2516:02:33【问题描述】:我在我的应用程序中实现了倒数计时器。它在后台运行得很好而且花花公子,但是当我使用高级任务杀手时... 查看详情

如何让我的倒数计时器重置为每次视图加载时?

】如何让我的倒数计时器重置为每次视图加载时?【英文标题】:Howtogetmycountdowntimertoresettoeverytimetheviewloads?【发布时间】:2017-07-2821:53:29【问题描述】:在我的iOS测验应用中,您有15秒的时间来回答问题。如果回答正确,则会出... 查看详情

颤振倒数计时器

】颤振倒数计时器【英文标题】:FlutterCountdownTimer【发布时间】:2019-07-0317:47:05【问题描述】:如何将传递的值放入构造中,以创建一个四舍五入到小数点后一位并显示在我的RaisedButton子文本中的计时器?我试过但没有运气。我... 查看详情

如何在模态视图中等待用户输入时停止执行

】如何在模态视图中等待用户输入时停止执行【英文标题】:HowtostopexecutionwhilewaitingforuserinputinaModalView【发布时间】:2011-10-1313:33:18【问题描述】:我有一个导航控制器,显示一个TableView和一个带有按钮的工具栏。如果用户按下... 查看详情

如何创建在使用 AnimationController 创建的倒数计时器期间发出的警报?

】如何创建在使用AnimationController创建的倒数计时器期间发出的警报?【英文标题】:HowtocreateanalarmthatgoesduringacountdowntimercreatedwithanAnimationController?【发布时间】:2020-08-2315:14:21【问题描述】:我使用动画控制器创建了一个倒数计... 查看详情

当 Droid/Nexus One 上的屏幕关闭时,加速度计停止提供样本,即使使用 WakeLock

】当Droid/NexusOne上的屏幕关闭时,加速度计停止提供样本,即使使用WakeLock【英文标题】:AccelerometerstopsdeliveringsampleswhenthescreenisoffonDroid/NexusOneevenwithaWakeLock【发布时间】:2011-01-0917:30:28【问题描述】:我有一些代码可以扩展服务... 查看详情

在活动停止时停止运行 livedata 任务

...法。我创建了一个简单的应用程序,它在活动开始时启动计时器。当活动被破坏时-计时器继续运行并且在重新启动时活动创建了第二个计时器,现在我们有两个正在运行的计时器-这是潜在的内存泄漏?如何 查看详情

如何使用倒数计时器停止游戏 - iOS [SWIFT] -

】如何使用倒数计时器停止游戏-iOS[SWIFT]-【英文标题】:Howtouseacountdowntimertostopagame-iOS[SWIFT]-【发布时间】:2014-09-2014:58:45【问题描述】:我的游戏应该在60秒后停止。但是我的计时器代码没有任何反应。vartimer=NSTimer()varcounter:Int=... 查看详情

如何停止在 C# 类中运行的计时器

】如何停止在C#类中运行的计时器【英文标题】:HowtostopatimerrunninginsideaclassC#【发布时间】:2015-09-2314:07:23【问题描述】:我有一个在课堂上运行的计时器。我有两个按钮。按钮1是启动计时器(在类内)按钮2用于强制停止计时... 查看详情