我刚刚开始学习Android,我正在尝试使用片段中的AsyncTask
进行网络服务调用。当我停止接收数据时,我希望AsyncTask
停止。我还想在ListView
的{{1}}方法中更新onPostExecute()
。我尝试了以下但我无法让它工作。 AsyncTask
仅在第一次运行并停止。我应该做些什么改变?
我的AsyncTask
及其Fragment
方法中的代码
onCreateView()
我的 JSONObject dataReceiverObject;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
int param1, param2;
while (true){
new MyAsyncTaskClass().execute(param1,param2);
param1 = param2;
param2 = param2 + 10;
if (dataReceiverObject==null)
break;
}
return view;
}
课程中的代码
AsyncTask
答案 0 :(得分:0)
在doInBackground()方法中调用一个线程
@Override
protected Void doInBackground(Integer... params) {
try {
dataReceiverObject = //fetch JSON data by passing
//params[0] and params[1]
//after receiving data from web server call new thread and pass the received data as parameter
updateListView(arraylistObject);
} catch (Exception e) {
e.printStackTrace();
}
}
现在定义方法如下
public void updateListView(final String[] arraylistObj){
runOnUiThread(new Runnable() {
@Override
public void run() {
if(arraylistObj.length>0){
adapter = new MyListAdapter(getActivity(), arraylistObject);
adapter.notifyDataSetChanged();
listView.setAdapter(adapter);
}
}
});
}
答案 1 :(得分:0)
从onPostExecute函数执行新的AsyncTask,直到从Web服务获取所有数据,使用索引来维护下载的数据。