我正在使用 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);
}
谢谢...
最佳答案
您可以使用 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);
}
希望对你有帮助...
关于java - 有什么办法可以同步通话吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28224541/