所以我正在尝试学习如何创建基本的Android应用程序。
我陷入了这个问题: 主页活动具有一个按钮,一旦按下该按钮便会执行两项操作: 1.在我的后端服务器上调用REST-Api。服务器返回JSON对象。 JSON对象映射到Java对象。最后,它们被添加到静态列表中。
问题在于步骤2不能按预期工作,因为步骤1是异步的。因此,第2步将在第1步完成以服务器中的数据填充静态列表之前运行,从而在ListActivity上显示一个空的List。
我如何在开始新的活动之前等待步骤1完成,以便正确显示数据?
谢谢。
答案 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);