我正在使用REST从服务器检索一些信息。我使用AsyncTask进行Get调用。但我需要等待结果......有没有办法同步进行?所以我可以得到结果。
代码:
private void sendStuff(Context context, String[] params) {
RESTGet restGet = new RESTGet(context);
restGet.setMessageLoading("Loading...");
try {
restGet.execute(params);
} catch (Exception e) {
e.printStackTrace();
}
restGet.stopMessageLoading();
Intent intent = new Intent(context, ShowPictures.class);
((Activity)context).startActivity(intent);
}
...谢谢
答案 0 :(得分:1)
您可以使用get()等待任务结束,甚至可以获得结果。但我不建议这样做,因为它会冻结你的应用程序。 假设RESTGet扩展AsyncTask:
的示例private void sendStuff(Context context, String[] params) {
final int TIMEOUT = 2000;
RESTGet restGet = new RESTGet(context);
restGet.setMessageLoading("Loading...");
try {
restGet.execute(params).get(TIMEOUT, TimeUnit.MILLISECONDS);
} catch (Exception e) {
e.printStackTrace();
}
restGet.stopMessageLoading();
Intent intent = new Intent(context, ShowPictures.class);
((Activity)context).startActivity(intent);
}
不是使用get,而是将代码放在onPostExecute方法中,因此它将在任务执行后调用。 例如:
private void sendStuff(Context context, String[] params) {
RESTGet restGet = new RESTGet(context) {
@Override
protected void onPostExecute(String feed) {
super.onPostExecute(feed);
this.stopMessageLoading();
Intent intent = new Intent(context, ShowPictures.class);
((Activity)context).startActivity(intent);
}
}.execute(params);
}
希望它有所帮助...