Я преобразовал свой AsyncTask
вAsyncTaskLoader
(в основном для работы с изменениями конфигурации). У меня есть TextView
, который я использую в качестве статуса прогресса, и я использовал onProgressUpdate
в AsyncTask
, чтобы обновить его. Не похоже, что AsyncTaskLoader
имеет эквивалент, поэтому во времяloadInBackground
(вAsyncTaskLoader
)я использую это:
getActivity().runOnUiThread(new Runnable() {
public void run() {
((TextView)getActivity().findViewById(R.id.status)).setText("Updating...");
}
});
я использую это в Fragment
, поэтому я использую getActivity()
. ]. Это работает довольно хорошо, за исключением случаев, когда происходит изменение конфигурации, например изменение ориентации экрана. Мой AsyncTaskLoader
продолжает работать (, поэтому я используюAsyncTaskLoader
), но runOnUiThread
, похоже, пропускается.
Не уверен, почему его пропускают и является ли это лучшим способом обновить пользовательский интерфейс с AsyncTaskLoader
.
ОБНОВЛЕНИЕ:
В итоге я вернулся к AsyncTask
, так как он лучше подходит для обновлений пользовательского интерфейса. Хотелось бы, чтобы они могли объединить то, что работает с AsyncTask
с AsyncTaskLoader
.