当前位置: 首页 > 知识库问答 >
问题:

在android中,如何在固定时间后重复任务?

唐炜
2023-03-14

我想每5秒重复调用一个方法,每当我希望停止对该方法的重复调用时,我都可以停止或重新启动该方法的重复调用。

这是一些我真正想实现的示例代码。请在这方面帮助我,我会非常感谢你。

private int m_interval = 5000; // 5 seconds by default, can be changed later
private Handler m_handler;

@Override
protected void onCreate(Bundle bundle)
{
  ...
  m_handler = new Handler();
}

Runnable m_statusChecker = new Runnable()
{
     @Override 
     public void run() {
          updateStatus(); //this function can change value of m_interval.
          m_handler.postDelayed(m_statusChecker, m_interval);
     }
};

public void startRepeatingTask()
{
    m_statusChecker.run(); 
}

public void stopRepeatingTask()
{
    m_handler.removeCallbacks(m_statusChecker);
}  

共有3个答案

周鸿运
2023-03-14

使用计时器任务在特定时间间隔后调用

    Timer timer = new Timer();
    timer.schedule(new UpdateTimeTask(),1, TimeInterval);

  class UpdateTimeTask extends TimerTask {

        public void run() 
           {        
            // do stufff
           }

        }
哈朗
2023-03-14

创建() 方法中使用处理程序。其 postDelayed() 方法导致将可运行对象添加到消息队列中,并在经过指定的时间量(即给定示例中为 0)后运行。然后,这将在固定时间速率(在本例中为 1000 毫秒)后自行排队。

参考此代码:

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    android.os.Handler customHandler = new android.os.Handler();
    customHandler.postDelayed(updateTimerThread, 0);
}

private Runnable updateTimerThread = new Runnable()
{
    public void run()
    {
        //write here whaterver you want to repeat
        customHandler.postDelayed(this, 1000);
    }
};
糜野
2023-03-14

使用此设置重复任务:

//Declare the timer
Timer t = new Timer();
//Set the schedule function and rate
t.scheduleAtFixedRate(new TimerTask() {

    @Override
    public void run() {
        //Called each time when 1000 milliseconds (1 second) (the period parameter)
    }

},
//Set how long before to start calling the TimerTask (in milliseconds)
0,
//Set the amount of time between each execution (in milliseconds)
1000);

如果你想取消任务,只需调用t.cancel()这里t是你的Timer对象

你也可以查看你答案下面的评论,他们已经给出了简短的信息。

 类似资料:
  • 问题内容: 我想每隔5秒重复调用一次方法,每当我希望停止该方法的重复调用时,我可能会停止或重新启动该方法的重复调用。 这是一些我真正想要实现的示例代码。在这方面请帮助我,我将非常感谢您。 问题答案: 使用以下命令设置重复任务: 如果您想取消任务,只需调用这里就是您的对象 并且您还可以检查答案下方的评论,他们已经提供了有关此内容的简短信息。

  • 我正在开发一个GUI,它允许用户决定是继续执行脚本还是终止脚本,但如果用户在15分钟内没有响应,我希望关闭窗口并自动执行脚本的其余部分。我用过根。函数中的destroy(),但它仅在用户响应时执行。 我尝试过在试用的基础上使用倒计时功能,但它不起作用,因为没有用户响应控制就不会进入倒计时功能。我有什么办法能完成这项任务吗?

  • 问题内容: 我的Java Scheduler有一个问题,我的实际需要是我必须在特定时间启动我的进程,并且我将在特定时间停止,我可以在特定时间启动我的进程,但是我不能在特定时间停止我的进程,如何指定进程在调度程序中运行多长时间(在这里我不会放),任何人对此都有建议。 问题答案: 您可以使用带有2个计划的计划,一个计划运行任务,另一个计划终止任务-参见下面的简化示例:

  • 我想为一个笔记应用程序添加笔记加号。我做了一个固定位置的圆,这样它总是可见的。然后,我想做两条线,形成一个加号,并将这些线居中。这是代码: null null 请告诉我如何将加号居中到固定位置的圆上。谢谢!

  • 问题内容: 我在一个包含日期/时间的网格中有一个字段,我需要知道该日期和当前日期/时间之间的区别。这样做的最佳方法是什么? 日期存储为。 问题答案: 这将为您提供两个日期之间的时差,以毫秒为单位 在您的示例中, 您需要确保这是一个有效的对象。 这样的事情可能会为您工作 即变成,这是构造函数可以理解的格式。

  • 问题内容: 匹配条件后,如何在一段时间后更新表? 我需要在满足某些条件后进行更新,并在2天后根据收到的最新答案(即e)进行更新,因此应在上进行更新。 问题答案: 试试这个 如此看来,这两个表是由相连的,并且具有的最新回答日期。通过使用我们可以知道今天的日期和比赛的答案之间的差异。