所以我需要进行一些http调用,这些调用返回包含单个或一组json对象的JSON响应。我有整个部分的执行http客户端调用和工作,它返回一个带有json响应的字符串。
所以我的问题是:调用异步的最佳方法是什么。我目前正在使用异步任务调用方法,该方法在后台方法中返回字符串,并通过另一个调用解析用于解析的静态方法解析字符串,该方法返回包含我发送到postExecute部分的所有数据的POJO根据结果将结果呈现给ui。这是一个好习惯还是有更好的方法?
我在考虑引入接口来提供数据,例如onSuccess listener和onFail Listener。那有什么建议吗?
谢谢。答案 0 :(得分:5)
所以我的问题是:调用异步的最佳方法是什么。我目前正在使用异步任务调用方法,该方法在后台方法中返回字符串,并通过另一个调用解析用于解析的静态方法解析字符串,该方法返回包含我发送到postExecute部分的所有数据的POJO根据结果将结果呈现给ui。这是一个好习惯还是有更好的方法?
IMO,如果AsyncTask
符合您的需求,您应该使用它 - 它是专门为帮助您避免线程管理的痛苦而做的..执行..异步任务。
我在考虑引入接口来提供数据,例如onSuccess listener和onFail Listener。那有什么建议吗?
不太清楚你的意思,但当然,你想优雅地处理失败。实现此目的的一种方法是仅基于AsyncTask
的返回值,但如果您有许多不同的可能失败方案,则使用侦听器/回调模式将它们分开绝对是一个有效的选项。我个人不是两个而是一个听众,就像这样:
interface MyHttpCallListener {
public void onSuccess(MyResult returnVal);
public void onFailure(MyError error);
}
对我来说似乎更干净。
谢谢。
没问题。
答案 1 :(得分:3)
我喜欢将Intent Service API用于此类事情。好处是你在整个地方制作新的asynctasks,你可以将你的请求排到服务器。缺点是您一次只能发出一个请求。但我实际上更喜欢将它们排成一列并一次执行一次,所以这对我有好处。
答案 2 :(得分:1)
我建议使用Async Task。