【发布时间】:2017-10-21 11:11:57
【问题描述】:
我有一个使用 REST API 填充列表的 Android 应用。
我正在尝试使用 AsyncTask 获取 API,但我无法理解它的工作原理。我在后台创建 API 对象以避免 NetworkOnMainThreadError,但这会导致我的 createItems() 方法在空对象上被调用。
如何在后台创建 API 对象并在 OnCreate 期间仍然可以使用它?谢谢!
这是我的 OnCreate() 方法的一部分:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_drawer);
createLists();
populateNameLists();
new GetAPITask().execute();
createItems();
(...)
}
这是导致错误的方法(createItems()):
public void createItems() {
testString = api.testSession();
itemString = api.getItems(...);
(...)
}
这里是异步任务:
private class GetAPITask extends AsyncTask<String, Integer, String> {
protected void onPreExecute() {
super.onPreExecute();
}
protected String doInBackground(String... params) {
api = new API(getString(R.string.dev_id), getString(R.string.auth_key));
return "API Created";
}
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
}
protected void onPostExecute(String result) {
super.onPostExecute(result);
}
}
【问题讨论】:
标签: android rest android-activity android-asynctask networkonmainthread