Ввод / вывод файла на Android - к ​​какому потоку он относится - PullRequest
1 голос
/ 13 декабря 2010

После прочтения статьи Брэда Фицпатрика в StrictMode у меня осталось несколько вопросов.

К чему относится файловый ввод / вывод в моих приложениях?(Я знаю, что поток пользовательского интерфейса неправильный, но может ли порождать новый поток хуже?)

Если я должен использовать поток для доступа к диску, то как мое приложение должно обрабатывать реализацию?Отправить параметры в AsyncTask?Общие переменные?Я хочу оптимизировать использование памяти, а не только скорость отклика (тем более, что на моих телефонах нет заметных различий)

@ Брэд, если вы читаете это: я бы хотел пост в блоге с образцами (или ссылкамик местам в источнике aosp), где это было сделано в рамках.

Спасибо всем!

1 Ответ

4 голосов
/ 13 декабря 2010

Не беспокойтесь о темах. Запуск нового потока быстрее, чем диск. На Nexus One, IIRC, создание новых потоков и запуск их в цикле составляет ~ 1 мс.

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

...