我是android的新手,非常习惯于web开发。在javascript中,当你想要执行一个异步任务时,你需要传递一个函数作为参数(回调):
http.get('www.example.com' , function(response){
//some code to handle response
});
我想知道我们是否可以对安卓的AsyncTask
做同样的事情,向onPostExecute()
方法传递一个函数引用,它就会运行它。
有什么建议吗?
发布于 2014-10-05 21:54:52
在Java中,函数并不像在JavaScript中那样是一等公民。AsyncTask将回调作为类中的方法提供,您应该重写它。
有关AsyncTask的子类以及发出web请求的doInBackground的实现,请参阅Make an HTTP request with android。
如果您想使用不同的回调来处理多个HTTP请求,您可以覆盖RequestTask并使用不同的回调实现来实现onPostExecute。您可以使用匿名类来模拟JavaScript回调通常使用的闭包:
new RequestTask(){
@Override
public void onPostExecute(String result) {
// Implementation has read only access to
// final variables in calling scope.
}
}.execute("http://stackoverflow.com");
如Xaver所示,您还可以为侦听器创建一个成熟的接口。对于我来说,这似乎只有在您希望实现几个默认onPostExecute函数并为特定调用选择其中一个默认实现时才有用。
https://stackoverflow.com/questions/26202568
复制相似问题