We can also use RxJava to move network operations to a background thread. And it's fairly simple as well.
webService.doSomething(someData)
.subscribeOn(Schedulers.newThread())-- This for background thread
.observeOn(AndroidSchedulers.mainThread()) -- for callback on UI
.subscribe(result -> resultText.setText("It worked!"),
e -> handleError(e));
You can do a lot more stuff with RxJava.Here are some links for RxJava. Feel free to dig in.