usar script como java javascript android equivalent

como - ¿Cuál es el equivalente de setTimeOut() javascript para Android?



settimeout javascript (4)

Necesito el código equivalente de setTimeOut(call function(),milliseconds); para Android.

setTimeOut(call function(),milliseconds);


Como una continuación de la respuesta de Valentyn usando java subrayado:

Añadir dependencia a gradle:

dependencies { compile group: ''com.github.javadev'', name: ''underscore'', version: ''1.15'' }

Java:

import com.github.underscore.lodash.$; $.setTimeout(new Function<Void>() { public Void apply() { // work return null; } }, 1000); // 1 second


Este es el código que usé en mi proyecto actual. Utilicé TimerTask como dijo Matt. 60000 es el milisec. = 60 seg. Lo usé para actualizar los resultados de los partidos.

private void refreshTimer() { autoUpdate = new Timer(); autoUpdate.schedule(new TimerTask() { @Override public void run() { runOnUiThread(new Runnable() { public void run() { adapter = Score.getScoreListAdapter(getApplicationContext()); adapter.forceReload(); setListAdapter(adapter); } }); } }, 0, 60000);


Hay un método setTimeout () en la biblioteca de underscore-java . Soy el mantenedor del proyecto.

Ejemplo de código:

import com.github.underscore.lodash.U; import com.github.underscore.Function; public class Main { public static void main(String[] args) { final Integer[] counter = new Integer[] {0}; Function<Void> incr = new Function<Void>() { public Void apply() { counter[0]++; return null; } }; U.setTimeout(incr, 100); } }

La función se iniciará en 100ms con un nuevo hilo.


Probablemente quieras revisar TimerTask

Ya que mencionó esto nuevamente, me gustaría hacer una recomendación diferente, que es un Handler . Es más fácil de usar que una TimerTask ya que no necesitará llamar explícitamente a runOnUiThread, ya que el Handler se asociará con el subproceso de la interfaz de usuario siempre que se cree en el subproceso de la IU o lo cree utilizando el looper principal en su constructor. Funcionaría así:

private Handler mHandler; Runnable myTask = new Runnable() { @Override public void run() { //do work mHandler.postDelayed(this, 1000); } } @Override public void onCreate(Bundle savedState) { super.onCreate(savedState); mHandler = new Handler(Looper.getMainLooper()); } //just as an example, we''ll start the task when the activity is started @Override public void onStart() { super.onStart(); mHandler.postDelayed(myTask, 1000); } //at some point in your program you will probably want the handler to stop (in onStop is a good place) @Override public void onStop() { super.onStop(); mHandler.removeCallbacks(myTask); }

Hay algunas cosas que debes tener en cuenta con los manejadores en tu actividad:

  1. Su actividad puede ser apagada / no visible mientras su controlador aún se está ejecutando si no lo detiene en onStop (o en OnPause si lo inició en onResume), esto dará lugar a problemas si intenta actualizar la interfaz de usuario.
  2. Si su teléfono entra en modo de sueño profundo, los manejadores no dispararán con la frecuencia que haya especificado. Lo sé, ya que he realizado algunas pruebas exhaustivas con dispositivos Bluetooth para probar la conectividad después de muchas horas de operación y había usado manejadores junto con impresiones de registros cada vez que se activaban.
  3. Si necesita que este temporizador continúe, recomiendo ponerlo en un servicio que dure más que una actividad. Registre su actividad con el servicio (implementando una interfaz definida en el servicio para la comunicación con el servicio).