正如我在我的评论中所说的,当您带着意图再次启动同一个活动时,在活动和异步任务之间输入一个递归调用。相反,当您已经将活动实例传递给asynctask时,只需在活动中创建一个update方法并从asynctask中使用它:
private ArrayAdapter<String> adapter;
...
adapter = new ArrayAdapter<String>(this,
R.layout.activity_listview, new ArrayList<>());
ListView listView = (ListView) findViewById(R.id.schedulelist);
listView.setAdapter(adapter);
... rest of onCreate()
public void update(List<String> results) {
adapter.clear();
adapter.addAll(results);
}
然后正确实现异步任务:
public class AsyncTaskParseJson extends AsyncTask<String, Void, List<String>> {
private see_schedule_activity activity;
public AsyncTaskParseJson(see_schedule_activity activity) {
this.activity = activity;
}
@Override
protected List<String> doInBackground(String... arg0) {
return scheduleList;
}
@Override
protected void onPostExecute(List<String> results) {
activity.update(results);
}
这不是asynctask的一个很好的实现,但是应该可以让您开始。