簡體   English   中英

如何每 5 分鍾調用一次函數?

[英]how to call a function every 5 minutes?

我需要每 5 分鍾調用一次 speak 方法,然后我想在后台運行名為 callpeak 的異步方法,該方法回調 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;
    }

}

如果您只想在應用程序打開時運行該方法,您可以簡單地使用TimerTask

Timer myTimer = new Timer ();
TimerTask myTask = new TimerTask () {
    @Override
    public void run () {
        // your code 
        callSpeak().execute() // Your method
    }
};

myTimer.scheduleAtFixedRate(myTask , 0l, 5 * (60*1000)); // Runs every 5 mins

如果您想在應用程序未運行的情況下在后台運行它,您可以使用AlarmManager並每 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 ,即使您退出活動或關閉應用程序。

您可以在官方文檔中找到更多詳細信息: 使用 WorkManager 安排任務

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM