- Книга «Android. Программирование для профессионалов. 3-е издание»
- Структура книги
- Множественные загрузки
- Взаимодействие с главным потоком
- Создание фонового потока
- Андроид программирование для профессионалов билл филипс
- Android. Программирование для профессионалов. 3-е издание
- Руководство для разработчиков.
- Филлипс Б., Стюарт К., Марсикано К. «Android. Программирование для профессионалов» Питер, 2017 год, 688 стр., 3-е изд., ISBN: 978-5-4461-0413-0; (17,8 мб. pdf)
- Программирование под Android, для профессионалов, Харди Б., Филлипс Б., 2014
Книга «Android. Программирование для профессионалов. 3-е издание»
Третье издание познакомит вас с интегрированной средой Android Studio, которая сильно облегчает разработку приложений. Вы не только изучите основы программирования, но и узнаете о возможностях самых распространенных версий Android; новых инструментах, таких как макеты с ограничениями и связывание данных; модульном тестировании; средствах доступности; архитектурном стиле MVVM; локализации; новой системе разрешений времени выполнения. Все учебные приложения были спроектированы таким образом, чтобы продемонстрировать важные концепции и приемы программирования под Android и дать опыт их практического применения.
Под катом более подробно о книге и отрывок из книги «Множественные загрузки»
Структура книги
В этой книге мы напишем восемь приложений для Android. Два приложения очень просты, и на их создание уходит всего одна глава. Другие приложения часто оказываются более сложными, а самое длинное приложение занимает 13 глав. Все приложения спроектированы так, чтобы продемонстрировать важные концепции и приемы и дать опыт их практического применения.
• GeoQuiz — в первом приложении мы исследуем основные принципы создания проектов Android, активности, макеты и явные интенты.
• CriminalIntent — самое большое приложение в книге, предназначено для хранения информации о проступках ваших коллег по офису. Вы научитесь использовать фрагменты, интерфейсы «главное-детализированное представление», списковые интерфейсы, меню, камеру, неявные интенты и многое другое.
• BeatBox — наведите ужас на своих врагов и узнайте больше о фрагментах, воспроизведении мультимедийного контента, архитектуре MVVM, связывании данных, тестировании, темах и графических объектах.
• NerdLauncher — нестандартный лаунчер, раскроет тонкости работы системы интентов и задач.
• PhotoGallery — клиент Flickr для загрузки и отображения фотографий из общедоступной базы
Flickr. Приложение демонстрирует работу со службами, многопоточное программирование, обращения к веб-службам и т. д.
• DragAndDraw — в этом простом графическом приложении рассматривается обработка событий касания и создание нестандартных представлений.
• Sunset — в этом «игрушечном» приложении вы создадите красивое представление заката над водой, а заодно освоите тонкости анимации.
• Locatr — приложение позволяет обращаться к сервису Flickr за изображениями окрестностей вашего текущего местонахождения и отображать их на карте. Вы научитесь пользоваться сервисом геопозиционирования и картами.
Множественные загрузки
В настоящее время сетевая часть PhotoGallery работает следующим образом: PhotoGalleryFragment запускает экземпляр AsyncTask, который получает JSON от Flickr в фоновом потоке, и разбирает JSON в массив объектов GalleryItem. В каждом объекте GalleryItem теперь хранится URL, по которому находится миниатюрная версия фотографии.
Следующим шагом должна стать загрузка этих миниатюр. Казалось бы, дополнительный сетевой код можно просто добавить в метод doInBackground() класса FetchItemsTask. Массив объектов GalleryItem содержит 100 URL-адресов для загрузки. Изображения будут загружаться одно за одним, пока у вас не появятся все сто. При выполнении onPostExecute(…) они все вместе появятся в RecyclerView.
Однако единовременная загрузка всех миниатюр создает две проблемы. Во-первых, она займет довольно много времени, а пользовательский интерфейс не будет обновляться до момента ее завершения. На медленном подключении пользователям придется долго рассматривать стену из Биллов.
Во-вторых, хранение полного набора изображений требует ресурсов. Сотня миниатюр легко уместится в памяти. Но что, если их будет 1000? Что, если вы захотите реализовать бесконечную прокрутку? Со временем свободная память будет исчерпана.
С учетом этих проблем реальные приложения часто загружают изображения только тогда, когда они должны выводиться на экране. Загрузка по мере надобности предъявляет дополнительные требования к RecyclerView и его адаптеру. Адаптер инициирует загрузку изображения как часть реализации onBindViewHolder(…).
AsyncTask — самый простой способ получения фоновых потоков, но для многократно выполняемых и продолжительных операций этот механизм изначально малопригоден. (О том, почему это так, рассказано в разделе «Для любознательных» в конце этой главы.)
Вместо использования AsyncTask мы создадим специализированный фоновый поток. Это самый распространенный способ реализации загрузки по мере надобности.
Взаимодействие с главным потоком
Специализированный поток будет загружать фотографии, но как он будет взаимодействовать с адаптером RecyclerView для их отображения, если он не может напрямую обращаться к главному потоку?
Вспомните пример с обувным магазином и двумя продавцами-Флэшами. Фоновый Флэш завершил свой телефонный разговор с поставщиком, и теперь ему нужно сообщить Главному Флэшу о том, что обувь была заказана. Если Главный Флэш занят, Фоновый Флэш не может сделать это немедленно. Ему придется подождать у стойки и перехватить Главного Флэша в свободный момент. Такая схема работает, но не слишком эффективно.
Лучше дать каждому Флэшу по почтовому ящику. Фоновый Флэш пишет сообщение о том, что обувь заказана, и кладет его в ящик Главного Флэша. Главный Флэш делает то же самое, когда он хочет сообщить Фоновому Флэшу о том, что какой-то товар закончился.
Идея почтового ящика чрезвычайно полезна. Возможно, у продавца имеется задача, которая должна быть выполнена скоро, но не прямо сейчас. В таком случае он кладет сообщение в свой почтовый ящик и обрабатывает его в свободное время.
В Android такой «почтовый ящик», используемый потоками, называется очередью сообщений (message queue). Поток, работающий с использованием очереди сообщений, называется циклом сообщений (message loop); он снова и снова проверяет новые сообщения, которые могли появиться в очереди (рис. 26.3).
Цикл сообщений состоит из потока и объекта Looper, управляющего очередью сообщений потока.
Главный поток представляет собой цикл сообщений, и у него есть управляющий объект, который извлекает сообщения из очереди сообщений и выполняет задачу, описанную в сообщении.
Мы создадим фоновый поток, который тоже использует цикл сообщений. При этом будет использоваться класс HandlerThread, который предоставляет готовый объект Looper.
Создание фонового потока
Создайте новый класс с именем ThumbnailDownloader, расширяющий HandlerThread. Определите для него конструктор и заглушку реализации метода с именем queueThumbnail() (листинг 26.4).
Листинг 26.4. Исходная версия кода потока (ThumbnailDownloader.java)
Классу передается один обобщенный аргумент . Пользователю ThumbnailDownloader понадобится объект для идентификации каждой загрузки и определения элемента пользовательского интерфейса, который должен обновляться после завершения загрузки. Вместо того чтобы ограничивать пользователя одним конкретным типом объекта, мы используем обобщенный параметр и сделаем реализацию более гибкой.
Метод queueThumbnail() ожидает получить объект типа T, выполняющий функции идентификатора загрузки, и String с URL-адресом для загрузки. Этот метод будет вызываться PhotoAdapter в его реализации onBindViewHolder(…).
Откройте файл PhotoGalleryFragment.java. Определите в PhotoGalleryFragment поле типа ThumbnailDownloader. В методе onCreate(…) создайте поток и запустите его. Переопределите метод onDestroy() для завершения потока.
Листинг 26.5. Создание класса ThumbnailDownloader (PhotoGalleryFragment.java)
В обобщенном аргументе ThumbnailDownloader можно указать любой тип. Однако вспомните, что этот аргумент задает тип объекта, который будет использоваться в качестве идентификатора для загрузки. В данном случае в качестве идентификатора удобно использовать объект PhotoHolder, так как он заодно определяет место, куда в конечном итоге поступят загруженные изображения.
Пара примечаний: во-первых, обратите внимание на то, что вызов getLooper() следует после вызова start() для ThumbnailDownloader (вскоре мы рассмотрим объект Looper более подробно). Тем самым гарантируется, что внутреннее состояние потока готово для продолжения, чтобы исключить теоретически возможную (хотя и редко встречающуюся) ситуацию гонки (race condition). До вызова getLooper() ничто не гарантирует, что метод onLooperPrepared() был вызван, поэтому существует вероятность того, что вызов queueThumbnail(…) завершится неудачей так как ссылка на Handler равна null.
Во-вторых, вызов quit() завершает поток внутри onDestroy(). Это очень важный момент. Если не завершать потоки HandlerThread, они никогда не умрут, словно зомби. Или рок-н-ролл.
Наконец, в методе PhotoAdapter.onBindViewHolder(…) вызовите метод queueThumbnail() потока и передайте ему объект PhotoHolder, в котором в конечном итоге будет размещено изображение, и URL-адрес объекта GalleryItem для загрузки.
Листинг 26.6. Подключение ThumbnailDownloader (PhotoGalleryFragment.java)
Запустите приложение PhotoGallery и проверьте данные LogCat. При прокрутке RecyclerView в LogCat появляются строки, сообщающие о том, что ThumbnailDownloader получает все запросы на загрузку.
Теперь, когда наша реализация HandlerThread заработала, следующим шагом становится создание сообщения с информацией, переданной queueThumbnail(), и его размещение в очереди сообщений ThumbnailDownloader.
Для Хаброжителей скидка 20% по купону — Android
Источник
Андроид программирование для профессионалов билл филипс
Библиотека программиста запись закреплена
Android. Программирование для профессионалов (2016) / Android Programming: The Big Nerd Ranch Guide (2013, pdf)
Авторы: Б. Харди, Б. Филлипс, К. Стюарт, К. Марсикано
Изучение Android — все равно, что жизнь в другой стране: даже если вы говорите на местном языке, на первых порах вы все равно не чувствуете себя как дома. Такое впечатление, что все окружающие знают что-то такое, чего вы еще не понимаете. И даже то, что уже известно, в новом контексте оказывается попросту неправильным.
Второе издание познакомит вас с интегрированной средой разработки Android Studio, которая поможет с легкостью создавать приложения для Android. Вы не только изучите основы программирования, но и узнаете о возможностях Lollipop, новых инструментах вспомогательных библиотек, а также некоторых ключевых инструментах стандартной библиотеки, включая SoundPool, анимацию и ресурсы. Все учебные приложения были спроектированы таким образом, чтобы продемонстрировать важные концепции и приемы программирования под Android и дать опыт их практического применения.
К посту прикреплена полная книга на английском языке в формате pdf.
Источник
Android. Программирование для профессионалов. 3-е издание
Руководство для разработчиков.
Филлипс Б., Стюарт К., Марсикано К. «Android. Программирование для профессионалов» Питер, 2017 год, 688 стр., 3-е изд., ISBN: 978-5-4461-0413-0; (17,8 мб. pdf)
Для изучения этой книги вы должны быть знакомы с языком Java, включая: классы и объекты, интерфейсы, слушатели, пакеты, вну-тренние классы, анонимные внутренние классы и обобщенные классы. В третьем издании вы познакомитесь с интегрированной средой Android Studio, которая значительно облегчает разработку ваших приложений. Вы не только изучите основы программирования, но и узнаете о возможностях самых распространенных версий Android. А также новых инструментах, это — макеты с ограничениями и связывание данных, модульное тестирование, средства доступности, архитектурный стиль MVVM, локализации и новой системе разрешений времени выполнения. Все учебные приложения были спроектированы таким образом, чтобы продемонстрировать важные концепции и приемы программирования под Android и дать опыт их практического применения.
Содержание
Изучение Android 22
Необходимые инструменты 26
Глава 1. Первое приложение Android 28
Глава 2. Android и модель MVC 57
Глава 3. Жизненный цикл активности 78
Глава 4. Отладка приложений Android 98
Глава 5. Вторая активность 112
Глава 6. Версии Android SDK и совместимость 135
Глава 7. UI-фрагменты и FragmentManager 146
Глава 8. Вывод списков и RecyclerView 177
Глава 9. Создание пользовательских интерфейсов с использованием макетов и виджетов 201
Глава 10. Аргументы фрагментов 221
Глава 11. ViewPager 233
Глава 12. Диалоговые окна 244
Глава 13. Панель инструментов 262
Глава 14. Базы данных SQLite 283
Глава 15. Неявные интенты 302
Глава 16. Интенты при работе с камерой 318
Глава 17. Двухпанельные интерфейсы 332
Глава 18. Локализация 350
Глава 19. Доступность 367
Глава 20. Привязка данных и MVVM 384
Глава 21. Модульное тестирование и воспроизведение звуков 409
Глава 22. Стили и темы 431
Глава 23. Графические объекты 448
Глава 24. Подробнее об интентах и задачах 463
Глава 25. HTTP и фоновые задачи 483
Глава 26. Looper, Handler и HandlerThread 508
Глава 27. Поиск 530
Глава 28. Фоновые службы 546
Глава 29. Широковещательные интенты 572
Глава 30. Просмотр веб-страниц и WebView 593
Глава 31. Пользовательские представления и события касания 608
Глава 32. Анимация свойств 620
Глава 33. Отслеживание местоположения устройства 634
Глава 34. Карты 658
Глава 35. Материальный дизайн 671
Послесловие 686
Источник
Программирование под Android, для профессионалов, Харди Б., Филлипс Б., 2014
Программирование под Android, для профессионалов, Харди Б., Филлипс Б., 2014.
Эта книга научит вас всем тонкостям разработки приложений для мобильных устройств, работающих на популярной операционной системе Android. Основанное на учебном курсе известного образовательного IT-проекта Big Nerd Ranch, это издание содержит ключевые концепции программирования в Android, разъяснение API и множество примеров кода и упражнений. В процессе работы с книгой читатель самостоятельно разработает восемь Android-приложений разной сложности и тематики, включая клиент для загрузки фотографий из базы Flickr, приложение, имитирующее телевизионный пульт дистанционного управления, а также сервис геолокации, отслеживающий перемещения пользователя по всему свету и отображающий их на карте. Все учебные приложения были спроектированы таким образом, чтобы продемонстрировать важные концепции и приемы программирования под Android и дать опыт их практического применения.
Создание проекта Android.
Работа начинается с создания проекта Android. Проект Android содержит файлы, из которых состоит приложение. Чтобы создать новый проект, откройте Eclipse и выполните команду File ► New ► Android Application Project, чтобы запустить мастера нового приложения. В первом диалоговом окне введите имя приложения GeoQuiz (рис. 1.3). Имя проекта автоматически обновляется в соответствии с именем приложения. В поле Package Name введите имя пакета com.bignerdranch.android.geoquiz. Обратите внимание: во введенном имени пакета используется схема «обратного DNS», согласно которой доменное имя вашей организации записывается в обратном порядке с присоединением суффиксов дополнительных идентификаторов. Эта схема обеспечивает уникальность имен пакетов и позволяет различать приложения на устройстве и в Google Play.
Содержание.
Благодарности.
Изучение Android.
Глава 1. Первое приложение Android.
Глава 2. Android и MVC.
Глава 3. Жизненный цикл Activity.
Глава 4. Отладка приложений Android.
Глава 5. Вторая активность.
Глава 6. Версии Android SDK и совместимость.
Глава 7. UI-фрагменты и FragmentManager.
Глава 8. Макеты и виджеты.
Глава 9. Вывод списков и ListFragment.
Глава 10. Аргументы фрагментов.
Глава 11. ViewPager.
Глава 12. Диалоговые окна.
Глава 13. Воспроизведение звука и MediaPlayer.
Глава 14. Сохранение фрагментов.
Глава 15. Локализация.
Глава 16. Панель действий.
Глава 17. Сохранение и загрузка локальных файлов.
Глава 18. Контекстные меню и режим контекстных действий.
Глава 19. Камера I: Viewfinder.
Глава 20. Камера II: Съемка и обработка изображений.
Глава 21. Неявные интенты.
Глава 22. Двухпанельные интерфейсы.
Глава 23. Подробнее об интентах и задачах.
Глава 24. Стили и включения.
Глава 25. Графические объекты.
Глава 26. HTTP и фоновые задачи.
Глава 27. Looper, Handler и HandlerThread.
Глава 28. Поиск.
Глава 29. Фоновые службы.
Глава 30. Широковещательные интенты.
Глава 31. Просмотр веб-страниц и WebView.
Глава 32. Пользовательские представления и события касания.
Глава 33. Отслеживание местоположения устройства.
Глава 34. Локальные базы данных и SQLite.
Глава 35. Асинхронная загрузка данных.
Глава 36. Карты.
Глава 37. Послесловие.
Бесплатно скачать электронную книгу в удобном формате, смотреть и читать:
Скачать книгу Программирование под Android, для профессионалов, Харди Б., Филлипс Б., 2014 — fileskachat.com, быстрое и бесплатное скачивание.
Скачать pdf
Ниже можно купить эту книгу по лучшей цене со скидкой с доставкой по всей России. Купить эту книгу
Источник