等待HttpRequest完成,然后再开始新活动

时间:2019-06-09 01:59:33

标签: java android

所以我正在尝试学习如何创建基本的Android应用程序。

我陷入了这个问题: 主页活动具有一个按钮,一旦按下该按钮便会执行两项操作: 1.在我的后端服务器上调用REST-Api。服务器返回JSON对象。 JSON对象映射到Java对象。最后,它们被添加到静态列表中。

  1. 启动一个新的意图,该意图将启动具有列表布局的活动。 在OnCreate()的ListLayout中填充了步骤1中获得的静态List中的数据。

问题在于步骤2不能按预期工作,因为步骤1是异步的。因此,第2步将在第1步完成以服务器中的数据填充静态列表之前运行,从而在ListActivity上显示一个空的List。

我如何在开始新的活动之前等待步骤1完成,以便正确显示数据?

谢谢。

2 个答案:

答案 0 :(得分:0)

使用AsyncTask

在方法doInBackground()中放入用于执行API调用的代码。 API调用完成后,将调用方法onPostExecute(),您可以在其中放置代码以进行下一个活动。

在此处查看详细指南:https://developer.android.com/reference/android/os/AsyncTask

答案 1 :(得分:0)

创建一个AsyncTask类并覆盖其方法,如下例所示:

 public class DownloadTask extends AsyncTask<String,String,String>{


  @Override
  public void onPreExecute()
  super.onPreExecute();
  {
  /// initialize loading animation if you want
  }

  @Override
  public String doInbackGround(String... params)
  {
          ///call your rest request 

           return resulofyourrequest;
  }

  @Override
  public void onPostExecute(String result)
  {
      super.onPostExecute(result);
      // stop loading animation if you already started one in onPreExecute
      ///do the stuff you need after you get the result and start your activity here

  }

}

并运行您的课程

  new DownloadTask().execute(your_url);