Обновление пользовательского интерфейса из AsyncTaskLoader

Я преобразовал свой AsyncTaskвAsyncTaskLoader(в основном для работы с изменениями конфигурации). У меня есть TextView, который я использую в качестве статуса прогресса, и я использовал onProgressUpdateв AsyncTask, чтобы обновить его. Не похоже, что AsyncTaskLoaderимеет эквивалент, поэтому во времяloadInBackgroundAsyncTaskLoader)я использую это:

getActivity().runOnUiThread(new Runnable() {
    public void run() {
        ((TextView)getActivity().findViewById(R.id.status)).setText("Updating...");
    }
});

я использую это в Fragment, поэтому я использую getActivity(). ]. Это работает довольно хорошо, за исключением случаев, когда происходит изменение конфигурации, например изменение ориентации экрана. Мой AsyncTaskLoaderпродолжает работать (, поэтому я используюAsyncTaskLoader), но runOnUiThread, похоже, пропускается.

Не уверен, почему его пропускают и является ли это лучшим способом обновить пользовательский интерфейс с AsyncTaskLoader.

ОБНОВЛЕНИЕ:

В итоге я вернулся к AsyncTask, так как он лучше подходит для обновлений пользовательского интерфейса. Хотелось бы, чтобы они могли объединить то, что работает с AsyncTaskс AsyncTaskLoader.

5
задан Kris B 18 April 2012 в 01:00
поделиться