На данный момент, из того, что вы показали, нет особого смысла в том, чтобы вообще иметь Handler.Обработчик - это механизм, который присоединен к потоку, который его создает, просто для того, чтобы планировать задачи в том же потоке, поэтому, если callHandler вызывается другим потоком, обработчик будет работать в любом потоке, который вызвал callHandler.Модель, которую я нашел наиболее успешной для Android IPC, выглядит следующим образом:
public class myActivity extends Activity {
public Handler mHandler = new Handler()
public void startAsynchronousTask() {
// Fill in as necessary, or offload responsibility elsewhere
new Thread(new Runnable() {
public void run {
//Do something in the background
...
updateUI(results)
}
}).start();
}
public void updateUI(Results results) {
mHandler.post(new UIUpdater(results));
}
private class UIUpdater implements Runnable {
UIUpdater(Results results) {
//construct whatever...
}
@Override
public void run() {
//Update UI
}
}
}
Вкратце, для этого запускается асинхронная задача .... когда эта задача завершается, она вызывает updateUI,updateUI помещает код, который должен быть выполнен, в поток пользовательского интерфейса, чтобы представления могли быть изменены и т. д. Таким образом, что касается вашей асинхронной задачи, все, что нужно сделать, - это вызвать метод для обновления пользовательского интерфейса.В действительности все немного сложнее, но интерфейс вашей деятельности остается чистым и простым в использовании для любых асинхронных задач.