我是异步任务的新手,但我需要从后台方法中完成的异步任务中获取一个字符串 例如
AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
final MobileServiceList<AppDirectory> result =
mDirectoryTable.where().field("Family_Id").eq(11).execute().get();
for (AppDirectory item : result) {
//this is the string that I need to return
String neededstring = item.getheadofhousehold;
}
} catch (final Exception e) {
}
return null;
}
};
//I need "neededstring" to equal result
String result = task.execute();
答案 0 :(得分:1)
2种方式:
一种是使用Interface,如下所述: https://stackoverflow.com/a/12575319/1750013
其他人(快速且肮脏),在您的活动中制作一个吸气剂/设定者。在onPostExecute()
中,将此字符串设置为setter方法。
答案 1 :(得分:0)
所以你只需返回你想要的字符串,然后在任务结束时将其恢复到post执行后,或者如果你继续循环或数组并且想要返回几个字符串,你可以在更新proggress上使用它一次1个。
这是一个简单的例子:
private class CustomTask extends AsyncTask<String, Void, String> {
}
@Override
protected String doInBackground(String... params) {
String str = "string i want to return";
return str;
}
@Override
protected void onPostExecute(String s) {
String returned string = s;
}
}