Android studio 计划一个函数,甚至在循环函数上执行某些操作

Android studio 计划一个函数,甚至在循环函数上执行某些操作,android-studio,Android Studio,嘿,我在想一个每1分钟触发一个函数的代码,但在一个循环函数中,每次我这样做,它都会安排函数运行55555次,无停止,并在同一时间执行所有操作 我想做的是让它每1分钟只做一次,即使是在循环函数上,比如onGpsStatusChanged或location listener 安卓工作室 为此,您可以使用AndroidJobScheduler。此实现将帮助您在特定时间(当然是超时)发布操作。阅读 。 另一种可能是post的简单方法,它使用AndroidHandler和post延迟功能。例如 priv

嘿,我在想一个每1分钟触发一个函数的代码,但在一个循环函数中,每次我这样做,它都会安排函数运行55555次,无停止,并在同一时间执行所有操作

我想做的是让它每1分钟只做一次,即使是在循环函数上,比如onGpsStatusChanged或location listener

安卓工作室

  • 为此,您可以使用Android
    JobScheduler
    。此实现将帮助您在特定时间(当然是超时)发布操作。阅读

  • 另一种可能是post的简单方法,它使用Android
    Handler
    和post延迟功能。例如

    private static final long DELAY = TimeUnit.MINUTES.toMillis(1)
    
    private void startTask() {
       new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
    
          @Override
          public void run() {
              /**
               * Your function here, and start task again!
               */
               startTask()
           }
    
       }, DELAY);
    }
    

  • 我不是100%确定你的意思,所以你能发代码吗?无论如何,我用它每分钟运行
    timerTick

            final Handler handler = new Handler();
            final Runnable r = new Runnable() {
                public void run() {
                    timerTick();
                    handler.postDelayed(this, 1000 * 60);
                }
            };
            this.runOnUiThread(r);
    
    每1分钟触发一个函数,但在循环函数中,每次 我这样做是为了安排函数运行55555次无停止和执行 他们在同一时间所有人

    我也会在Android Studio上使用作业调度程序TimerTick


    嘿,每次我在循环函数上做这个,因为OngPSStatus改变了一些总是运行它的东西,重复你给我的函数,速度如此之快,没有停止,我试图强迫它每1分钟重复1次。我用的是android studio java,我不确定valI,我用的是android studio java,我不确定val@Calli我改成
    Java
    。谢谢!兄弟,我想它每1秒做两次我希望它确保每1秒只做一次这是我的功能有问题我正在调用它,但是问题是,我没有任何函数,这个函数会触发它,它会在几分钟后或一段时间后提高速度,它会提高函数的速度,开始任务,每秒做5次,然后等待一些,它会每秒做10次,然后不停地做
    final val TIME_PERIOD = TimeUnit.Milliseconds(60000)
    
    try {
       scheduleMethod() {
         Handler(Looper.getMainLooper()).postDelayed(
           Runnable {
             execute()
           }, TIME_PERIOD)
        }
    } catch (InterruptedException e) {
        e.printStackTrace();
    }