Используйте AsyncTask для реализации этого. Переопределите doInBackground, чтобы получить данные (они выполняются в отдельном потоке), затем переопределите onPostExecute (), чтобы показать тост (он выполняется в потоке пользовательского интерфейса).
Вот хороший пример http://www.screaming -penguin.com / node / 7746
А вот и официальные документы .
UPD: пример того, как обрабатывать частичный прогресс.
class ExampleTask extends AsyncTask<String, String, String>{
@Override
protected String doInBackground(String... params) {
while(true){
//Some logic on data recieve..
this.publishProgress("Some progress");
//seee if need to stop the thread.
boolean stop = true;
if(stop){
break;
}
}
return "Result";
}
@Override
protected void onProgressUpdate(String... values) {
super.onProgressUpdate(values);
//UI tasks on particular progress...
}
}