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

2022-09-01 04:07:50

我想在每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);
}  

答案 1

使用以下命令设置重复任务:

//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()tTimer

您还可以检查您答案下方的评论,他们已经提供了有关该内容的简要信息。


答案 2

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

请参考此代码:

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);
    }
};

推荐