J'ai besoin du code équivalent de setTimeOut(call function(),milliseconds);
pour Android.
setTimeOut(call function(),milliseconds);
Vous voulez probablement vérifier TimerTask
Depuis que vous avez soulevé cette question, je voudrais faire une recommandation différente, qui est un Handler . Il est plus simple à utiliser qu'une TimerTask car vous n'aurez pas besoin d'appeler explicitement runOnUiThread car le gestionnaire sera associé au thread d'interface utilisateur tant qu'il est créé sur le thread d'interface utilisateur ou que vous le créez en utilisant le looper principal dans son constructeur. Cela fonctionnerait comme ceci:
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);
}
Il y a certaines choses à savoir avec les gestionnaires de votre activité:
C'est le code que j'ai utilisé dans mon projet actuel. J'ai utilisé TimerTask comme Matt l'a dit. 60000 est le milisec. = 60 sec. je l'ai utilisé pour rafraîchir les scores des matchs.
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);
Il existe une méthode setTimeout () dans la bibliothèque nderscore-Java . Je suis le responsable du projet.
Exemple de code:
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 fonction sera lancée dans 100 ms avec un nouveau thread.
Comme suite à la réponse de Valentyn en utilisant Java soulignement:
Ajoutez une dépendance à 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