使用以下调用:
@GET("/user/{id}/data")
void getUserData(@Path("id") int id, Callback<Data> cb);
回调函数应该在主线程上执行(如果不使用RxJava)。我的问题是:
- 解析发生在哪里(假设我正在使用XML转换器来处理响应)。这是在主线程还是其他线程上执行?这取决于转换器的实现吗?
- 如果我需要包含一些(繁重的)验证规则/业务规则,我是否需要在callable内部启动一个新线程?或者在回调方法中完成是否可以?
我正在寻找一种从Web服务获取数据并避免自己进行线程管理(或使用其他方法如IntentService等)的方法,但担心使用RxJava(因为它具有实验性支持)。是否有另一种建议的方法来解决这个问题?
Callback
。删除它,让getUserData()
返回Data
,并在后台线程上调用getUserData()
,例如一个AsyncTask
的doInBackground()
。在那里,您可以在更新主应用程序线程上的UI之前完成其余工作。 - CommonsWare