У меня проблема. Я разрабатываю приложение для Android, и в своей работе я использую asyncTask. Я вызываю задачу из моего onCreate и обновляю свой интерфейс в onPostExecute. У меня есть listView, и в asyncTask я выполняю запрос Http для получения информации с сервера. Но моя проблема заключается в том, что иногда во время работы я не получаю никакого вывода.AsyncTask onPost Execute работает, но doInBackground не
Я пробовал отлаживать, и кажется, что я получаю отпечаток от onPostExecute, но ни один из doInBackground. Я также использую Google Cloud Endpoints для запроса Http, если это имеет значение.
Пожалуйста, помогите.
Вот мой класс:
public class ILiked extends CustomFragment {
public ArrayList<User> ilikedList = new ArrayList<>();
ListView userList;
MyAdapter adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View v = inflater.inflate(R.layout.fragment_iliked, null);
ILikedAsyncTask task = new ILikedAsyncTask();
task.execute(new Pair<>(getShared().getString("username", ""), v));
return v;
}
public SharedPreferences getShared() {
SharedPreferences shared;
if (Login.sharedPreferences != null) {
shared = this.getActivity().getSharedPreferences(Login.MyPreferences, Context.MODE_PRIVATE);
} else {
shared = this.getActivity().getSharedPreferences(Signup.MyPreferences, Context.MODE_PRIVATE);
}
return shared;
}
public class ILikedAsyncTask extends AsyncTask<Pair<String, View>, Void, ArrayList<User>> {
private UserApi myApiService = null;
View context;
@Override
protected void onPreExecute() {
super.onPreExecute();
System.out.println("I AM IN PRE EXECUTE");
}
@Override
protected ArrayList<User> doInBackground(Pair<String, View>... params) {
context = params[0].second;
if (myApiService == null) {
UserApi.Builder builder = new UserApi.Builder(AndroidHttp.newCompatibleTransport(),
new AndroidJsonFactory(), null)
.setRootUrl("MYURL")
.setGoogleClientRequestInitializer(new GoogleClientRequestInitializer() {
@Override
public void initialize(AbstractGoogleClientRequest<?> abstractGoogleClientRequest) throws IOException {
abstractGoogleClientRequest.setDisableGZipContent(true);
}
});
myApiService = builder.build();
}
ArrayList<User> list = new ArrayList<>();
try {
String username = params[0].first;
UserCollection users = myApiService.getUsersILiked(username).execute();
System.out.println("CONTENT" + users.getItems().toString());
if (users != null) {
List<User> userList = users.getItems();
list.addAll(userList);
}
} catch (IOException e) {
}
return list;
}
@Override
protected void onPostExecute(final ArrayList<User> result) {
super.onPostExecute(result);
userList = (ListView) context.findViewById(R.id.iliked_list);
adapter = new MyAdapter(context.getContext(), result);
userList.setAdapter(adapter);
//System.out.println("List Content: "+result.get(0));
userList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Profile fr = new Profile();
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
Bundle args = new Bundle();
args.putString("username", result.get(position).getUsername());
fr.setArguments(args);
ft.replace(R.id.content_frame, fr);
ft.commit();
}
});
System.out.println("DID THE ASYNC");
}
}
}
Возможно, вы получаете исключение. Добавьте журнал в 'catch block', чтобы проверить это. –