In IOS we use blocks when we want to handle an action when a particular situation occur
。
在android中有没有这样的方法来处理 onCompletion 的情况,我们可以添加它的位置。
与 AsyncTask方法类似,它知道工作何时完成。它执行onPostExecute。当特定情况到达时我们如何创建这种类型的方法,我们就像处理它一样。
今天我找到了一种像IOS中的Block一样的方式
BaseAsyncTask(new Callback(){
onPostResult(string result)
{
// do whatever you want to do with the result got from asynctaks
}
});
它是一个委托,它在达到特定情况时调用..
我是正确的,上面的代码是阻止在Android ,就像在IOS中一样。或者在android中有任何其他创建块的方法。
答案 0 :(得分:9)
表现得像iOS Block:
一个。比方说,在你的班级 APISingleton (例如单例类中的Volley request-API):
在课堂外定义界面:
// Callback Blueprint
interface APICallback {
void onResponse(User user, boolean success, String message); // Params are self-defined and added to suit your needs.
}
在您的API请求函数
中public void requestAPIWithURL:(String url, final APICallback callback) {
// ....
// After you receive your volley response,
// Parse the JSON into your model, e.g User model.
callback.onResponse(user, true, "aloha");
}
B中。因此,如何调用API请求并从您的活动或片段中传递回调函数,如下所示:
APISingleton.getInstance().requestAPIWithURL("http://yourApiUrl.com", new APICallback() {
@Override
public void onResponse(User user, boolean success, String message) {
// you will get your user model, true, and "aloha" here
mUser = user;
Log.v(TAG, "success:" + success);
Log.v(TAG, "aloha or die?" + message);
// Your adapter work. :D
}
});
答案 1 :(得分:2)
您的问题似乎有两个问题,所以我会回答它们
在android中有没有这样的方法来处理onCompletion的情况,我们可以添加到哪里? 在达到特定情况时我们如何创建这种方法?
是的,有办法。我在这里有asked同样的事情。
在这种情况下,您使用Runnable
。你这样使用它:
//creating a runnable block
Runnable block = new Runnable() {
@Override
public void run() {
//code here
}
};
//passing it on arguments
doSomething(block); //just like a normal variable
//using it on the method
public void doSomething(Runnable block) {
block.run();
}
你的第二个问题:
BaseAsyncTask(new Callback(){
onPostResult(string result)
{
// do whatever you want to do with the result got from asynctaks
}
});
我是正确的,上面的代码是在android中阻止我们在IOS中。或者在android中有任何其他创建块的方法。
是的,在我看来,对象Callback
的行为与我在前面的例子中展示的Objective C中的块相同。当异步任务完成(结果已经可用)时,将调用该回调。可能是这样的:
callback.onPostResult();
仅为了您的信息,对象Runnable
和Callback
为java interfaces。有关接口here的更多信息。如果你的回调不需要额外的参数,你可以使用Runnable
以避免重新发明轮子。但是如果有一些特殊的东西,即你想将参数传递给回调,那么你可以创建自己的界面并像Runnable
一样使用它。