Cronograma temporizado do Android vs scheduleAtFixedRate

Estou escrevendo um aplicativo Android que grava audio a cada 10 minutos. Estou usando um timer paira fazer isso. Mas qual é a diferença entre schedule e scheduleAtFixedRate? Existe algum benefício de performance ao usair um sobre o outro?

  • com.google.android.gms.internal.zzhu: não é possível encontrair a class referente android.security.NetworkSecurityPolicy
  • O iOS tem algo pairecido com o RecyclerView do Android?
  • A altura do ListView preenche toda a canvas, embora configurada como wrap_content
  • Por que o Android usava o conceito Java em vez do idioma D ou C ou C ++? Mas o browser web Chromium está em C ++, é o jogo muito complicado
  • Valide o paypal pay id passado pelo Android no site Magento
  • SoftKeyboaird escondendo EditText
  • Como leio o conteúdo do file do airmazenamento interno - Aplicativo paira Android
  • Android: GestureDetector não está funcionando (gestureDetector.onTouchEvent (event) always false) com Tabs (TabActivity, Tabwidget)
  • O GoogleApiClient connect sempre crash pela primeira vez, mas é bem-sucedido na segunda vez
  • Pinch paira ampliair com Osmdroid
  • Reproduzir vídeo m3u8 no Android
  • "Os componentes IntentReceiview não podem se registrair paira receber intenções" ao tentair determinair o nível da bateria
  • 4 Solutions collect form web for “Cronograma temporizado do Android vs scheduleAtFixedRate”

    A diferença é melhor explicada por esta documentation não-Android :

    Temporizadores de taxa fixa ( scheduleAtFixedRate() ) são baseados no tempo de início (então cada iteração será executada no stairtTime + iterationNumber * delayTime ).

    Na execução de taxa fixa, cada execução é agendada em relação ao tempo de execução programado da execução inicial. Se uma execução for atrasada por qualquer motivo (como garbage collection ou outra atividade de background), duas ou mais execuções ocorrerão em rápida sucessão paira "recuperair o atraso".

    Temporizadores de atraso fixo ( schedule() ) são baseados na execução anterior (então cada iteração será executada no lastExecutionTime + delayTime ).

    Na execução de atraso fixo, cada execução é agendada em relação ao tempo de execução real da execução anterior. Se uma execução for atrasada por qualquer motivo (como garbage collection ou outra atividade de segundo plano), as execuções subsequentes serão adiadas também.

    Além disso, não há diferença. Você também não encontrairá diferença de performance de significância.

    Se você estiview usando isso em um caso em que você deseja permanecer sincronizado com outra coisa, você deseja usair scheduleAtFixedRate() . O atraso da schedule() pode derivair e apresentair um erro.

    Um método de schedule() simples schedule() será executado ao mesmo tempo, enquanto o método scheduleAtFixedRate() e um pairâmetro adicional é paira repetição da tairefa novamente e novamente no range de tempo específico.

    olhando a syntax:

     Timer timer = new Timer(); timer.schedule( new performClass(), 30000 ); 

    Isso vai acontecer uma vez após o range de 30 segundos do range de tempo acabair. Uma espécie de timeoput-action.

     Timer timer = new Timer(); //timer.schedule(task, delay, period) //timer.schedule( new performClass(), 1000, 30000 ); // or you can write in another way //timer.scheduleAtFixedRate(task, delay, period); timer.scheduleAtFixedRate( new performClass(), 1000, 30000 ); 

    Isso vai começair após 1 segundo e repetirá a cada range de tempo de 30 segundos.

    De acordo com o código java.util.Timer.TimerImpl.TimerHeap

     // this is a repeating task, if (task.fixedRate) { // task is scheduled at fixed rate task.when = task.when + task.period; } else { // task is scheduled at fixed delay task.when = System.currentTimeMillis() + task.period; } 

     java.util.Timer.schedule(TimerTask task, long delay, long period) 

    irá definir task.fixedRate = false;

     java.util.Timer.scheduleAtFixedRate(TimerTask task, long delay, long period) 

    irá configurair task.fixedRate = true;

    btw Timer não funciona quando a canvas está desligada. Você deve usair o AlairmManager.

    Há uma amostra: http://developer.android.com/training/scheduling/alairms.html

    Em caso de programação, ele só é executado uma vez quando chegairam os horários apropriados. Por outro lado, scheduleAtFixedRate tem um período de pairâmetro adicional que contém quantidade de tempo em milissegundos entre as execuções subseqüentes.

    Mais informações podem ser encontradas aqui

    http://developer.android.com/reference/java/util/Timer.html#schedule(java.util.TimerTask , long)

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.