Puede usar de esta muestra:
En el siguiente ejemplo, vamos a utilizar esta función para publicar el resultado de una búsqueda de sinónimos procesada por un subproceso en segundo plano.
Para lograr el objetivo durante la devolución de llamada de actividad OnCreate, configuraremos onClickListener para ejecutar searchTask en un hilo creado.
Cuando el usuario hace clic en el botón Buscar, crearemos una clase anónima Runnable que busca la palabra escrita en R.id.wordEt EditText e inicia el hilo para ejecutar Runnable.
Cuando finalice la búsqueda, crearemos una instancia de Runnable SetSynonymResult para publicar el resultado en el sinónimo TextView sobre el hilo de la interfaz de usuario.
Esta técnica a veces no es la más conveniente, especialmente cuando no tenemos acceso a una instancia de Actividad; por lo tanto, en los siguientes capítulos, vamos a discutir técnicas más simples y limpias para actualizar la interfaz de usuario desde una tarea informática en segundo plano.
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";
}
}
Fuente :
programación asincrónica de Android Helder Vasconcelos