我正在寻找将我的Android应用程序连接到WCF RESTful Web服务,到目前为止,我已经做好了设置。但是现在我正在通过AsyncTask<>
将执行分割到后台线程上不是将AsyncTask类嵌入到活动.java文件中,我宁愿将它们拆分为单独的包,以便它们可以被应用程序中的多个活动和片段使用(但是我可能会丢失)这里有明显的东西),我如何将AsyncTask的结果编组回调用Activity?我知道我会将doInBackground()的结果传递给onPostExecute() - 但是如何将结果传递回调用活动或片段?
类似地,我如何在父活动上调用进度通知作为单独的AsyncTask<>类将不具备UI组件的知识或可见性。
在C#中,我可能已经通过回调委托传递给AsyncTask的构造函数<>指向父活动上的方法,然后在任务完成时使用结果的参数调用回调委托。它与Android类似吗?
答案 0 :(得分:2)
您可以通过使用方法创建接口来完成此操作。让您的活动实现此界面。然后将活动的引用(使用此关键字)传递给异步任务,该任务可以通过其构造函数创建为单独的类。然后在Async Task的postExecute()方法中,调用接口的方法返回活动。
答案 1 :(得分:1)
如果您想与RESTful服务进行交互,也许您可以使用以下方法省去一些麻烦:
改造示例:
Retrofit将您的REST API转变为Java界面。
public interface GitHubService {
@GET("/users/{user}/repos")
List<Repo> listRepos(@Path("user") String user);
}
RestAdapter类生成GitHubService接口的实现。
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("https://api.github.com")
.build();
GitHubService service = restAdapter.create(GitHubService.class);
对生成的GitHubService的每次调用都会向远程Web服务器发出HTTP请求。
List<Repo> repos = service.listRepos("octocat");
来源:http://square.github.io/retrofit/
您还可以阅读有关AsyncTask VS Volley VS Retrofit here.
的信息