Я создал AsyncTaskLoader для загрузки JSON данных из API. Однако я заметил, что если я поверну экран своего устройства, оно снова попытается загрузить данные из API.
В результате, если я отключу свое соединение Inte rnet и поверну экран, загрузчик не может вернуть данные из-за сбоя HTTP-запроса.
// NewsLoader.java
public class NewsLoader extends AsyncTaskLoader<String> {
private String url;
public NewsLoader(@NonNull Context context, String url) {
super(context);
this.url = url.trim();
}
@Override
protected void onStartLoading() {
forceLoad();
}
@Override
public String loadInBackground() {
if (url == null || url.isEmpty()) return null;
return NetworkUtils.fetchNews(url);
}
}
Затем,
// NewsActivity.java
// Initialising the loader
LoaderManager.getInstance(this).initLoader(LOADER_ID, args, this);
// onCreateLoader method
public Loader<String> onCreateLoader(int id, @Nullable Bundle args) {
// Process args and get url
return new NewsLoader(this, url);
}
Насколько мне известно, это ненормальное поведение для загрузчика. Есть идеи, что не так?