【问题标题】:Android TimerTask not finish after app is closing应用程序关闭后,Android TimerTask 未完成
【发布时间】:2014-12-20 08:52:42
【问题描述】:

应用程序关闭后如何完成我的 TimerTask?垃圾收集器无法正常工作或只是不想完成任何后台任务或线程。

【问题讨论】:

  • 定义app was closing ...

标签: java android timertask


【解决方案1】:

假设你想在 Activity 被销毁时停止它:

@Override
protected void onDestroy()
{
    super.onDestroy();
    yourTimer.cancel();
}

或者如果你想在你的活动被隐藏时停止它:

@Override
protected void onStop()
{
    super.onStop();
    yourTimer.cancel();
}

根据活动工作流程,选择必须取消计时器的最佳方法:

【讨论】:

  • 确实,很难说什么时候调用,但最终它是
  • 这正是重点,我不想在活动方法中取消我的后台任务,因为它会定期更新用于不同活动的数据。我只想在应用程序关闭时完成我的任务...
  • 应用程序关闭时无法触发任何操作。
  • 那么,不可能有后台线程可以在不同的活动后面运行并正确关闭吗?所以每次创建和停止活动时我总是必须启动和停止?
  • 你必须自己管理这个线程。您不能做的是在您的应用程序被 Android 杀死的同时停止它。您只能将线程结尾绑定到活动状态或您可以预测的内容。
【解决方案2】:

您应该在 Activity 的 onDestroy() 中停止任何线程/任务。顺便说一句,你不应该在 Android 中使用 TimerTask。检查这个 SO 问题:TimerTask vs Thread.sleep vs Handler postDelayed - most accurate to call function every N milliseconds?

为了更新数据,您可以在服务中执行此操作(您应该这样做,而不是活动)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    相关资源
    最近更新 更多