java - 有什么办法可以同步通话吗?

标签 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);
}

谢谢...

最佳答案

您可以使用 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/

相关文章:

java - RDBMSLoginModule : ClassCastException com. ibm.ws.jdbc.DataSourceService 到 javax.sql.DataSource

java - JSF 2.0 从操作方法返回 null 不保留原始请求参数

android - Appcompat CardView 和 Picasso 没有圆角

java - 如何在 Android 中使用 runnable 循环

android - Fiddler 捕获模拟器的浏览器数据包但不是我的应用程序的

java - Spring @Transactional 并发

java - 无法从 Maven : cert error 下载项目依赖项 (db4o)

javascript - 我可以将 JavascriptExecutor 与 Appium 一起使用吗?

android - Kotlin - lateinit VS 任何? =空

android - 避免禁用证书固定 Android