Единственный способ обойти это, я вижу, это запустить отдельный поток - который вводит условие гонки с другим кодом пользовательского интерфейса, который может считывать предпочтения и ожидать, что значения по умолчанию уже установлены.
Затем используйте AsyncTask
, поместив вызов setDefaultValues()
в doInBackground()
и "другой код пользовательского интерфейса, который может прочитать настройки" в onPostExecute()
.
.чтобы получить информацию об этой загрузке (она дает только идентификатор загрузки), вам нужно запросить DownloadManager, в котором есть курсор, сообщающий об ошибке, если включена строгая политика.
Итак, запросите DownloadManager
в фоновом потоке.
Так в чем же история - нормально ли обращаться к курсорам в главном потоке?
Чтозависит от вашего определения «отлично».
На устройствах Android 1.x и 2.x используется файловая система YAFFS2, которая в основном сериализует весь доступ к диску во всех процессах.Чистый эффект состоит в том, что, хотя ваш код может казаться достаточно производительным в отдельности, иногда он кажется медленным в процессе производства из-за других вещей, происходящих в фоновом режиме (например, загрузка новой электронной почты).
Хотя это немногоменьше проблем в Android 3.x и выше (они переключились на ext4), нет сомнений в том, что флэш-ввод-вывод все еще относительно медленный - он будет немного более предсказуемо медленным.
StrictMode
предназначен для указания, где может возникнуть вялость.Вам решать, какие из них являются доброкачественными, а какие - нет.В идеальном мире вы бы очистили их всех;в идеальном мире у меня были бы волосы.
Или это плохо, и половина команды разработчиков Android и авторов книг Android забыли об этом?
Это всегда было «плохо».
Я не могу говорить за «половину команды разработчиков Android».Я предполагаю, что на раннем этапе они ожидали, что разработчики применят свой опыт разработки для обнаружения вялого поведения - это существенно не отличается от проблем производительности на любой другой платформе.Со временем они предлагали больше шаблонов, чтобы направлять разработчиков в позитивном направлении (например, Loader
framework), в дополнение к изменениям на уровне системы (например, YAFFS2-> ext4), чтобы уменьшить эту проблему.Частично они пытаются адресовать места, где Android представляет различные проблемы, связанные с производительностью, такие как однопоточный пользовательский интерфейс.
Точно так же я не могу говорить за всех авторов книг Android.Я, конечно, не фокусировался на проблемах производительности в ранних выпусках моих книг, так как фокусировался на функциях и функциях Android.Со временем я добавил больше советов в этих областях.Я также предоставил открытый исходный код, связанный с этими темами.В 2012 году я внесу массивные изменения в свои книги и создам больше проектов с открытым исходным кодом, чтобы продолжить решение этих проблем.Я подозреваю, учитывая ваш тон, что я (и, возможно, другие) в ваших глазах полностью провалился, и вы, безусловно, приветствуете ваше мнение.