Делать файл ввода / вывода на Android - какой поток он принадлежит
-
09-10-2019 - |
Вопрос
После прочтения Брэда Фитцпатрика статья На Strictmode я остался с несколькими вопросами.
Где файл ввода / вывода принадлежит в моих приложениях? (Я знаю, что нить интерфейса неверна, но могла неренить новую тему быть хуже?)
Если я должен использовать нить для доступа к диску, то как мое приложение обрабатывает реализацию? Отправить параметры на асинктюсс? Общие переменные? Я хочу оптимизировать использование памяти, а также не только отзывчивость (тем более что нет никакой заметной разницы на моих телефонах)
@Brad Если вы читаете это: я бы понравилось сообщение в блоге с образцами (или ссылками на места в источнике AOSP), где это было сделано в рамках.
Спасибо всем!
Решение
Не беспокойтесь о нитках. Запуск новой поток быстрее, чем диск. На Nexus One, IIRC, создавая новые потоки и запустив их в цикле, составляет ~ 1 мс.
Используйте все, что наиболее подходит для вашего приложения: Asynctask, Intentservice или новая тема с общей состоянием (с соответствующими замками!). ASYNCTASK гарантированно поддерживает работу, если пользователь выключает, но немного проще в использовании и выскакивает вас к потоке пользовательского интерфейса, когда это сделано. Интенсивный сайт будет продолжать работать и завершено, но не поможет вам вернуться к потоке пользовательского интерфейса с результатом. Вам нужно будет отправить результат (если есть) в обработчик на вашу UI.