我ListFragment
使用 AsyncTask 从 REST 服务中获取数据。该onPostExecute()
块将成功/失败状态返回给我的片段而不是结果。在我的片段中,使用此状态来显示我的ListView
(在成功的情况下)或弹出一个 toast(在失败的情况下)。
一旦AsyncTask
执行,屏幕中间就会显示一个活动圈,ListView
一旦数据可用,它就会被替换。如果数据不可用,会弹出 toast 消息,但不会删除活动圈。我没有在代码中的任何地方声明何时启动活动微调器。
活动圈失败了怎么停止?
这是 的代码块AsyncTask
:
class invokeServiceTask extends AsyncTask<String, Void, ServiceResult> {
@Override
// method to be run in BG thread
// pass the mashup parameters to the BG thread
protected ServiceResult doInBackground(String... id) {
return invokeMashupService(id);
}
@Override
// called on UI thread when the worker is done
protected void onPostExecute(ServiceResult result) {
_delegate.mashupReturned(result);
}
}
如果结果返回为 SERVICE_FAILURE,我将显示一个 toast,如下面的代码块所示,AsyncTask
完成后在 UI 中执行。
public void mashupReturned(ServiceResult result) {
// check for getActivity to counter the case when user presses the back
// button quickly and the app context is no longer valid.
if (getActivity() != null) {
if (result == ServiceResult.SERVICE_SUCCESS) {
// Fetch the array of GroupListItems and create a
// GroupListAdapter using it
GroupListItem[] list_data = _dataModel.getData();
GroupListAdapter adapter = new GroupListAdapter(getActivity(),
R.layout.list_row, list_data);
setListAdapter(adapter);
} else {
// TODO: stop the activity spinner
Toast.makeText(getActivity(),
"Problem invoking service: " + result,
Toast.LENGTH_SHORT).show();
}
} else {
Log.i("test", "Activity is null");
}
}