Vous pouvez utiliser à partir de cet exemple:
Dans l'exemple suivant, nous allons utiliser cette fonctionnalité pour publier le résultat d'une recherche de synonymes qui a été traitée par un fil d'arrière-plan.
Pour atteindre l'objectif lors du rappel de l'activité OnCreate, nous allons configurer onClickListener pour exécuter searchTask sur un thread créé.
Lorsque l'utilisateur clique sur le bouton Rechercher, nous allons créer une classe anonyme Runnable qui recherche le mot tapé dans R.id.wordEt EditText et démarre le thread pour exécuter Runnable.
Une fois la recherche terminée, nous créerons une instance de Runnable SetSynonymResult pour publier le résultat sur le synonyme TextView via le fil d'interface utilisateur.
Cette technique n'est parfois pas la plus pratique, surtout lorsque nous n'avons pas accès à une instance Activity; Par conséquent, dans les chapitres suivants, nous allons discuter de techniques plus simples et plus propres pour mettre à jour l'interface utilisateur à partir d'une tâche de calcul en arrière-plan.
public class MainActivity extends AppCompatActivity {
class SetSynonymResult implements Runnable {
String synonym;
SetSynonymResult(String synonym) {
this.synonym = synonym;
}
public void run() {
Log.d("AsyncAndroid", String.format("Sending synonym result %s on %d",
synonym, Thread.currentThread().getId()) + " !");
TextView tv = (TextView) findViewById(R.id.synonymTv);
tv.setText(this.synonym);
}
}
;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button search = (Button) findViewById(R.id.searchBut);
final EditText word = (EditText) findViewById(R.id.wordEt);
search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Runnable searchTask = new Runnable() {
@Override
public void run() {
String result = searchSynomim(word.getText().toString());
Log.d("AsyncAndroid", String.format("Searching for synonym for %s on %s",
word.getText(), Thread.currentThread().getName()));
runOnUiThread(new SetSynonymResult(result));
}
};
Thread thread = new Thread(searchTask);
thread.start();
}
});
}
static int i = 0;
String searchSynomim(String word) {
return ++i % 2 == 0 ? "fake" : "mock";
}
}
La source :
programmation asynchrone android Helder Vasconcelos