AsyncTask не выполняется - PullRequest
       44

AsyncTask не выполняется

0 голосов
/ 14 февраля 2019

Я следую этому примеру: 14.1A: Работа с компонентами архитектуры: Room, LiveData, ViewModel

, и я построил свой репозиторий, который загружает данные сети (анализирует xml)для этого я использую асинхронную задачу, но она никогда не выполняется.Вот сокращенный код для смелости:

public class CarSoundsRepository {

private MutableLiveData<List<CarEntry>> mAllCars;

CarSoundsRepository(Application application) {
    new loadDataAsyncTask().execute();
}

LiveData<List<CarEntry>> getAllCars () {
    return mAllCars;
}

private  class loadDataAsyncTask extends AsyncTask<Void, Void, List<CarEntry>> {

    @Override
    protected List<CarEntry> doInBackground(Void... voids) {
        List<CarEntry> carlist = null;
        InputStream is = null;
        try {
            is = new URL("https://urllink").openStream();
        } catch (IOException e) {
            Log.e(TAG, "IO exception "+e);
        }
        if (is != null) {
            try {
                carlist =  new MyXmlParser().parse(is);
            } catch (XmlPullParserException e) {
                Log.e(TAG,"XML Pareser exception "+e);
            } catch (IOException e) {
                Log.e(TAG,"IO exception" + e);
            }
        }
        return carlist;
    }

    @Override
    protected void onPostExecute(List<CarEntry> carEntries) {
        mAllCars.setValue(carEntries);
    }
}

}

Этот репозиторий создается в моем экземпляре ViewModel:

mRepository = new CarSoundsRepository(application);

И я получаю свою ViewModel в своей деятельности:

 mViewModel = ViewModelProviders.of(this).get(CarSoundsViewModel.class);

Все работает нормально, за исключением того, что loadDataAsyncTask никогда не выполняется.Метод execute () вызывается, но никогда не переходит к методу doInBackground.

Есть идеи?

...