任何方式进行同步接听电话?

时间:2015-01-29 21:03:18

标签: java android

我正在使用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);
}

...谢谢

1 个答案:

答案 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);
}

希望它有所帮助...