0
我是新來的Java,我有一個方法,我試圖從Parse.com中使用包裝進行異步服務器調用。我想返回一個自定義對象,其中包含我從調用中獲得的信息,但是我得到了「錯誤:未知類」 基本上,我試圖阻止此方法返回,直到完成()被調用。如何從具有內部類的方法返回
我不知道java如何處理這種事情,我習慣於在Objective-C中工作。有沒有人知道我可以有沒有調用返回聲明,直到我設置完成()的屬性?
public ServerResponse getRestaurauntProfile(){
ParseQuery<ParseObject> profileQuery = ParseQuery.getQuery("Restaurant");
profileQuery.whereEqualTo("user", ParseUser.getCurrentUser());
profileQuery.findInBackground(new FindCallback<ParseObject>() {
final ServerResponse mResponse = new ServerResponse();
@Override
public void done(List<ParseObject> list, ParseException e) {
if (e == null) {
mResponse.setReturnObject(list.get(0));
mResponse.setReturnException(null);
} else {
mResponse.setReturnObject(null);
mResponse.setReturnException(e);
}
}
return mResponse;
});
}
聽起來的AsyncTask可能是一個很好的方法(http://developer.android.com/reference/android/ os/AsyncTask.html) – Nija
就像@Nija說的,把你的異步任務放到一個AsyncTask中,然後在postExecute方法中做你想做的事情 –
「我試圖阻止這個方法返回,直到done()被調用」 - 所以你試圖修改異步行爲以進行同步(通過將呼叫設置爲「阻止」)。 AFAIK Android不允許阻止來自幾個版本的呼叫(薑餅 - 我認爲)。您必須將代碼修改爲異步 - 通過觸發回調中的「發佈操作」。 – alfasin