Java 如何每5分钟调用一个函数?
我需要每5分钟调用一次speak方法,然后我想在后台运行一个名为callspeak的异步方法,该方法将speak方法回调为另一个类的公共方法。它必须每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
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);