Java 如何每5分钟调用一个函数?

Java 如何每5分钟调用一个函数?,java,android,Java,Android,我需要每5分钟调用一次speak方法,然后我想在后台运行一个名为callspeak的异步方法,该方法将speak方法回调为另一个类的公共方法。它必须每5分钟循环一次 class callSpeak extends AsyncTask<String, Void, String> { activityAudio a = new activityAudio(); @Override protected String doInBackground(String

我需要每5分钟调用一次speak方法,然后我想在后台运行一个名为callspeak的异步方法,该方法将speak方法回调为另一个类的公共方法。它必须每5分钟循环一次

    class callSpeak extends AsyncTask<String, Void, String> {
    activityAudio a = new activityAudio();
    @Override
    protected String doInBackground(String... strings) {

        try
        {
         while (true){
               a.speak();
                Thread.sleep(300000);
            }
        }
        catch (InterruptedException e)
        {e.getMessage();}
      return null;
    }

}

如果只想在应用程序打开时运行该方法,只需使用

如果你想在后台运行它,即使应用程序没有运行,你可以每5分钟使用并重复一次任务

希望对您有所帮助

您可以这样做:

Handler mHandler = new Handler();

Runnable mRunnableTask = new Runnable()
{
     @Override 
     public void run() {
          doSomething();
          // this will repeat this task again at specified time interval
          mHandler.postDelayed(this, yourDesiredInterval);
     }
};

// Call this to start the task first time
mHandler.postDelayed(mRunnableTask, yourDesiredInterval);

当您不再需要处理程序时,不要忘记从处理程序中删除回调。

执行此操作的最新和最有效的方法,即使您退出活动或关闭应用程序,也是从AndroidX体系结构中实现WorkManager


您可以从官方文档中找到更多详细信息:

在这种情况下,我将使用一个处理程序调用具有所需间隔的postDelayed函数,检查此线程,您可以找到一个很好的代码示例:您可以遵循此codelab-。我可以知道你为什么要在后台运行它吗?我解决了我的问题,非常感谢。但我还有一个问题要问你。如何使调用函数所需的时间变得动态?例如,现在该函数每5分钟回调一次。我希望在每次调用函数时都能随机更改此时间。
Handler mHandler = new Handler();

Runnable mRunnableTask = new Runnable()
{
     @Override 
     public void run() {
          doSomething();
          // this will repeat this task again at specified time interval
          mHandler.postDelayed(this, yourDesiredInterval);
     }
};

// Call this to start the task first time
mHandler.postDelayed(mRunnableTask, yourDesiredInterval);