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

Posted

技术标签:

【中文标题】倒数计时器停止在后台运行【英文标题】:Countdown timer stops running in background 【发布时间】:2013-01-25 16:02:33 【问题描述】:

我在我的应用程序中实现了倒数计时器。它在后台运行得很好而且花花公子,但是当我使用高级任务杀手时,它会停止计时器并且重新启动它的唯一方法是再次打开应用程序。即使我使用高级任务杀手之类的东西,是否仍然可以让计时器持续存在?

代码:

    TextView tv;
    final MyCounter timer = new MyCounter(10000,1000);

    tv  = (TextView)findViewById(R.id.healthtext);
    tv.setText("10"); 
    timer.start();


public class MyCounter extends CountDownTimer

    public MyCounter(long millisInFuture, long countDownInterval) 
        super(millisInFuture, countDownInterval);
    

    @Override
    public void onFinish() 
        Toast.makeText(getApplicationContext(), "death", Toast.LENGTH_LONG).show();
    

    @Override
    public void onTick(long millisUntilFinished) 
        tv.setText((millisUntilFinished/1000)+"");

【问题讨论】:

【参考方案1】:

据我所知 - 不,因为任务杀手会破坏您应用的进程,导致所有正在运行的线程退出

【讨论】:

此外,假设它确实通过所说的“任务杀手”持续存在,它会在下一个滴答声中崩溃,因为它引用了在 Activity 被强制关闭时被破坏的 UI 元素。 这很有意义。我只是好奇而已。谢谢您的意见。也许在某个地方,有人会遇到这个,它会回答他们的问题。【参考方案2】:

当计时器是您的应用程序的一部分时不会。您当然可以制作一个不属于应用程序的计时器。

【讨论】:

嗯。我从来没有想到这一点。你能扩展一下吗? 这取决于你想要什么。例如,您可以创建一个计时器服务,您的应用程序可以在其中注册一个计时器事件,并且当事件发生时,该服务将进行回调——可能通过广播或发送意图。如果它没有运行,你甚至可以让它重新启动你的应用程序。 有趣。我会弄乱它,看看会发生什么。我从来没有考虑过这个。

以上是关于倒数计时器停止在后台运行的主要内容,如果未能解决你的问题,请参考以下文章

当活动暂停时,如何正确停止倒数计时器中的媒体播放器?

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

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

在后台运行ios应用

如何在颤动的后台运行时钟计时器?

按秒倒数计时器