Неактивные приложения андроид для разработчиков


5 крутых опций Android, которые скрыты от обычных пользователей

Внимание! В статье использованы скриншоты и опции из операционной системы Android 7.1. Хотя большинство описанных элементов должны присутствовать и в других версиях Android, автор этого не гарантирует.

Как активировать опции для разработчиков

Несмотря на то, что речь в статье пойдёт о настройках для разработчиков, не стоит пугаться этого названия. Некоторые из представленных в этом разделе опций пригодятся и обычным пользователям. По умолчанию они не отображаются в настройках, но это легко исправить.

  1. Откройте настройки Android и перейдите в раздел «О телефоне».
  2. Промотайте в самый низ. Найдите строку «Номер сборки».
  3. Сделайте подряд семь быстрых тапов по этому элементу. В результате должно отобразиться уведомление о том, что теперь вы стали разработчиком, а в меню настроек появится соответствующий раздел.

Теперь давайте познакомимся с некоторыми из открывшихся нам возможностей.

1. Разрешить сохранение на внешние накопители

Некоторые разработчики специально отключают в своих приложениях возможность установки на SD-карту. С помощью переключателя «Разрешить сохранение на внешние накопители» вы можете разрешить это независимо от желания разработчика.

Учтите, что у разработчика может быть веская причина для запрета установки на внешнюю карту. Некоторые программы жёстко привязаны к определённому месту и не будут работать, если они установлены не там, где планировал разработчик. Поэтому пользоваться этой функцией нужно с осторожностью.

2. Включить многооконный режим

Многооконный режим — это фишка последних версий операционных систем от компании Google. Однако для работы этой функции требуется не только правильная версия Android, но и поддержка в самих приложениях, о чём, к сожалению, позаботились далеко не все разработчики.

С помощью опции «Изменение размера в многооконном режиме» вы сможете использовать в данном режиме любые приложения.

3. Не выключать экран во время зарядки

Обычно смартфоны сами выключают экран во время бездействия для экономии заряда батареи. Однако в некоторых случаях эта функция не нужна. Например, если вы хотите использовать старый смартфон в виде настольных часов или в автомобиле в качестве навигатора.

Опция «Не выключать экран» позволит смартфону пребывать в активном режиме всё время, пока он подключён к зарядному устройству.

4. Ускорить системные анимации

Это одна из самых полезных опций, позволяющая добиться значительного визуального ускорения работы Android. Дело в том, что некоторые производители в погоне за вау-эффектами слишком перегружают операционную систему красивой анимацией.

В этом разделе опций для разработчика вы сможете самостоятельно задать время их отображения или вообще отключить. В результате будет казаться, что система начала просто летать.

5. Переключиться в чёрно-белый режим

Если в вашем устройстве используется AMOLED-экран, то количество отображаемых цветов действительно имеет значение для экономии батареи. Чтобы протянуть ещё больше на остатках заряда, просто активируйте монохромный режим. Данная опция тоже скрывается в настройках для разработчика и называется «Имитировать аномалию».

А какие полезные опции для разработчиков используете вы?

lifehacker.ru

Увеличиваем производительность смартфона - «Хакер»

Содержание статьи

Будем честны: большинство интересных возможностей по настройке Droid-девайсов спрятаны и требуют рутования устройства. Тем не менее получать root предпочитают не все — кто-то из боязни потерять гарантию, другие из-за банальной лени. Мы решили рассмотреть альтернативные способы ускорения устройств на платформе от Google, для которых не нужно прав суперпользователя.

 

Введение

Google непрестанно повышает быстродействие своей системы. Но «чистый» Android сейчас встречается достаточно редко — производители, как правило, модифицируют прошивки, что не всегда положительно сказывается на производительности. К тому же помимо нее хорошо бы позаботиться об энергосбережении, а это зачастую вещи взаимоисключающие. Тем не менее такие возможности есть даже в нерутованном Android, хоть их и не очень много.

 

Удаление/отключение встроенных и ненужных приложений

До выхода четвертой версии Android отключать встроенные приложения, не имея прав root, было нельзя. Это приносило покупателям брендовых гаджетов неудобства, ибо каждый производитель норовит запихнуть в прошивку как можно больше программ, которые конечному пользователю попросту не нужны и в сумме кушают приличное количество ресурсов. В четвертой же версии гуглооси такая возможность появилась. Для отключения какого-либо встроенного приложения нужно зайти в «Настройки -> Общие -> Приложения -> Все», выбрать нужную софтину и в «Сведениях о приложении» нажать кнопку «Отключить» (либо «Удалить обновления», а затем уже «Отключить»). Для включения необходимо перейти на вкладку «Отключенные» и выполнить похожую процедуру.

Однако не все так радужно, как кажется на первый взгляд. Во-первых, отключение не влияет на постоянную память — приложение как было установлено, так и остается. Во-вторых, можно отключить отнюдь не все. Лишь некоторые приложения позволяют проделать с собой такой фокус. Я не буду давать много конкретных советов по отключению приложений, поскольку на каждом устройстве их список отличается. Вот краткий список того, что большинству пользователей не нужно, но постоянно висит в системе и отнимает память:

  • «Браузер» — зачем, если есть более удобные и легкие альтернативы?
  • «Календарь» и «Память календаря» — не замечал, чтобы кто-то активно ими пользовался.
  • «Email» и «Службы Exchange» — вроде все уже сидят на Gmail.
  • «Поиск Google» — достаточно бесполезная функция при наличии браузера (осторожно, отключает также и Google Now).
  • «Google Keep», «Google+» и другие не всегда нужные приложения от Google.

Помимо этого, рекомендую выключить (удалить) виджеты и живые обои. Кроме того, что эта функциональность требует памяти и процессорного времени, она еще и жрет батарею. Так что для увеличения скорости лучше подобные вещи вырубать. Можно выключить и эффекты на экране блокировки. В моем случае (Samsung со стандартной прошивкой) они находятся в «Настройки -> Устройство -> Экран блокировки -> Эффект при разблокировке».

К слову, о Home Screen — рекомендуется использовать как можно меньше главных экранов. В самом деле, зачем тебе 100500 экранов, если редко используемые приложения можно вызвать и из меню?

 

Выноски: INFO

Как работает отключение приложений. После нажатия на кнопку «Отключить» вызывается метод setApplicationEnabledSetting() класса PackageManager, который изменяет состояние приложения на COMPONENT_ENABLED_STATE_DISABLED_USER (кстати говоря, он появился еще в первом Android).

 

Настройка энергосбережения и использование параметров разработчика

Для ускорения работы гаджета можно также подкорректировать параметры энергосбережения. Конечно, это уменьшит время работы от аккумулятора, но ускорить может достаточно существенно. Для этого (в моем случае) нужно перейти в «Настройки -> Общие -> Энергосбережение» и либо сдвинуть переключатель, который находится в правом верхнем углу, либо поснимать нужные чекбоксы.

Работает это на разных платформах по-разному, и публичного API не существует — есть, конечно, PowerManager API, но к энергосбережению это имеет лишь очень косвенное отношение. Однако на Samsung Galaxy Note 10.1 (впрочем, как и для остальных Droid-девайсов южнокорейского гиганта) энергосбережением управляют через DVFS — Dynamic Voltage and Frequency Scaling, того самого, с помощью которого Samsung «фальсифицировал» результаты бенчмарков (замечу в скобках, что это была не настоящая фальсификация — просто для некоторых бенчмарков и приложений устройство работало на пределе своих возможностей).

Для отключения системной анимации (анимация в приложениях останется) нужно зайти в меню параметров разработчика, которое по умолчанию скрыто. Чтобы получить к нему доступ, семь раз тапни на пункте «Номер сборки», который находится в меню «Об устройстве / О телефоне». Затем перейди в появившееся меню и повыключай всю анимацию: параметры «Масштаб анимации окна», «Масштаб анимации перехода» и «Шкала длительности перехода» установи в «Анимация отключена» (в прошивках других производителей данные опции могут иметь несколько другое название).

В этом же меню можно ограничить количество фоновых процессов. Последнее, впрочем, следует делать с осторожностью — вместо ускорения возможно замедление работы из-за того, что часто используемые процессы будут прибиваться и вновь запускаться. Потому же, кстати, не рекомендуются всяческие таск-киллеры.

 

Ускорение приложений

Для ускорения отдельно взятых приложений можно почистить их кеш. Делается это в том же месте, где их можно отключать/удалять, то есть «Настройки -> Общие -> Диспетчер приложений -> Все», выбрать нужное тебе приложение и нажать кнопку «Очистить кеш».

Имеет также смысл ставить менее ресурсоемкие приложения — например, в моем случае Smart Launcher забирает меньше памяти, чем это делает родной самсунговский TouchWiz. Во врезке будут приведены конкретные советы, но особо следовать им я не рекомендую, поскольку все зависит от твоих потребностей. Главное в этом случае — подобрать нужное соотношение размер/функциональность.

Для определения потребления памяти можно использовать такой метод: устанавливаем какой-нибудь терминал с Busybox, определяем PID нужного процесса (с помощью ‘ps w’) и смотрим файл /proc//status. При этом, правда, нужно учитывать архитектуру Android — приложение может быть разнесено по нескольким процессам.

Если для тебя этот метод слишком трудный и ты не хочешь заморачиваться с каждым приложением — в маркете есть несколько графических аналогов утилиты top. Мне понравился один из них, под названием Process Explorer, реализация которого, правда, показалась непонятной — зачем для просмотра списка процессов использовать браузер?

Кстати, у сервиса Google Play есть привычка внезапно обновлять кучу приложений, что, понятно, съедает ресурсы. Отключить данный сервис не представляется возможным, но можно отключить само обновление. Для этого заходим в Play Маркет, вызываем меню (хинт: если не выходит вызвать с помощью софт-клавиш, «потяни» с левого края), выбираем «Настройки» и ставим в «Автообновление приложений» «Никогда».

Точно так же имеет смысл отключить и синхронизацию учетных записей (что, в дополнение к возможному увеличению быстродействия, потешит твою паранойю). Для этого заходим в «Настройки» и ищем, где находится пункт «Учетные записи», затем выбираем учетную запись и отключаем синхронизацию (как вариант, можно отключить только отдельно взятые и ненужные типы синхронизации, такие как, например, контакты Google+ или календарь. — Прим. ред.).

 

Отключение сканирования мультимедиа

По умолчанию Android сканирует все внешние накопители (SD-карты) на предмет мультимедиафайлов. Данная функция, хотя и полезна, достаточно сильно тормозит систему. Отключить ее можно. Для новых накопителей создаем пустой файл .nomedia в корне. Но чтобы отключить отображение уже имеющихся файлов в Android 4.0 и позднее, нужно, помимо создания данного файла в нужной тебе папке, произвести очистку данных и кеша для приложений «Галерея» и «Хранилище мультимедиа» и принудительно их остановить. После следующего запуска все мультимедиафайлы проиндексируются уже с учетом созданных файлов .nomedia.

 

Ускорение отдельных устройств — советы и секреты

Приведу несколько советов по самым известным брендам. Стоит отметить, что советы эти годятся только для официальных прошивок, поэтому если у тебя модифицированная прошивка — можешь смело пропускать раздел.

Samsung

Если ты владелец какого-либо из устройств данного бренда, то наверняка обратил внимание, что переход на основной экран по нажатию кнопки Home немного тормозит. Связано это с тем, что по двойному нажатию запускается S Voice — система распознавания речи. Если ты ею не пользуешься, можно отключить эту функцию, сняв чекбокс «Откр. клавишей „Домой“». Кроме того, если ты случайно включил команду пробуждения, лучше ее отключить — использование этой опции влияет на заряд батареи довольно сильно.

Кроме того, на некоторых устройствах Samsung имеется возможность отключения эффектов лаунчера. Для этого сделай долгий тап по пустому месту на домашнем экране, выбери «Настройки домашнего экрана» (Home screen settings) и в подменю «Эффект перехода» (Transition effect) выбери «Нет» (None).

HTC

В отдельных случаях на устройствах HTC может тормозить служба сообщений об ошибках. Хотя подобные вещи и не рекомендуется трогать, можно отключить данную опцию, зайдя в «Настройки -> О телефоне -> Отправлять HTC» (Tell HTC) и поснимав там соответствующие чекбоксы.

Sony

На Sony Xperia SP бывает ситуация, когда телефон внезапно начинает тормозить. Проблему можно попытаться исправить, удалив обновления для Google Chrome: «Настройки -> Приложения -> Chrome -> Удалить обновления».

 

Greenify

Приложение Greenify позволяет принудительно усыпить ненужные процессы (которые ты можешь выбрать) в то время, когда устройство спит, и запретить их вызов из сторонних процессов. Этим оно отличается от таск-киллеров, которые никак не препятствуют перезапуску фоновых приложений от внешних событий (по таймеру, требованию другого приложения или системному событию). К сожалению, часть функциональности доступна только на рутованных телефонах — в частности, самая важная функция засыпания приложений спустя несколько минут после засыпания устройства.

Причина в том, что метод forceStopPackage(), который позволяет Greenify перевести приложения в неактивное состояние, внутренний и доступен только системным приложениям или тем, что работают с правами root. В не-root-режиме остается использовать только метод killBackgroundProcesses(), который не выгружает процесс из памяти полностью, так что тому продолжают приходить системные события и «будить» его, что совсем не соответствует идеологии Greenify.

Поэтому для реализации функциональности в не-root-режиме разработчик Greenify пошел по совершенно другому и весьма изобретательному пути. При установке приложение регистрируется как Accessibility Service, получая таким образом доступ к интерфейсу системы, а затем просто вызывает диспетчер приложений и нажимает на нужные кнопки для убийства приложения через стандартное меню настроек Android. Во время спящего режима эта операция, к сожалению, невозможна, поэтому на нерутованных смартфонах Greenify может усыплять приложения только после того, как пользователь нажмет соответствующую кнопку.

 

ART

В Android 4.4 появилась замена Dalvik — ART, Android Runtime. Она обеспечивает AOT-компиляцию. Для того чтобы разобраться, что это такое и в чем состоит преимущество ART, придется сделать краткий экскурс в историю.

Во времена, когда закладывался фундамент под Android, в качестве языка программирования был выбран Java — в наибольшей степени из-за того, что предполагалось использовать ОС на самых разных платформах. И всем-то он был хорош, кроме одного — скорость работы Java-приложений была достаточно низкой. Происходило это потому, что код фактически интерпретировался.

Шло время. В Android 2.2 в виртуальную машину Dalvik добавили JIT-компиляцию. Это позволило добиться довольно значительного прироста скорости, но всех проблем не решило. И вот в версии KitKat появилась ART, позволяющая компилировать приложения даже не во время исполнения — во время установки. Включить ее можно в том же самом меню разработчика, где мы отключали эффекты. Это, с одной стороны, увеличивает время установки и размер, а также при первом включении требуется значительное время для преобразования всех уже установленных приложений в нативный код. С другой же стороны, увеличение скорости после ее включения в среднем составляет 50%, а для отдельных приложений и того больше (в частности, прокрутка стала гораздо более плавной).

Но есть у ART и недостатки. Некоторые из них очевидны — например, несовместимость с отдельными обфускаторами и приложениями. На отдельных же просто не концентрируют внимание, хотя стоило бы. К таковым я отнесу возможные проблемы с безопасностью. Проведенные относительно недавно (на майской конференции HITB) эксперименты показывают, что в случае подсовывания специально сформированного DEX-файла транслятор (dex2oat) вылетает. Кроме того, если найти уязвимости в самой ART, появится возможность создавать user-mode-руткиты. Помимо этого, образ boot.oat, генерируемый транслятором, имеет фиксированный базовый адрес (0x700000), что позволяет при некоторых условиях обойти ASLR.

В то же время с точки зрения реверс-инжиниринга статический анализ OAT-файлов пока что затруднен — по той причине, что привычных нам имен методов в коде попросту нет. Оно и понятно. Зато, поскольку формат OAT-файлов фактически представляет собой ELF, можно использовать инструменты, предназначенные для последнего, такие как GDB. Что же до динамического… Инструментарий для него как таковой отсутствует.

ART будет включена по умолчанию в пятой версии ОС от Google (а Dalvik, соответственно, будет удалена). На мой взгляд, с учетом потенциальных проблем с безопасностью полностью отказываться от Dalvik рановато, так что тут я с политикой Google не согласен. Однако (с учетом этого) тем более стоит включить ART на KitKat, чтобы протестировать нужные приложения.

 

Заключение

Несмотря на гибкость платформы Android, без использования кастомных и/или рутованных прошивок ускорить работу твоего девайса трудно. Но не невозможно, доказательством чего служит данная статья. Напоследок дам тебе универсальный совет: устанавливай только те приложения, которые ты реально будешь использовать, всем же остальным говори твердое «Нет».

 

 

Легковесные программы для Android

Приведу краткий список легковесных аналогов нужных программ для Android. Список этот минимальный, включающий только самое, на мой взгляд, необходимое:

  • Вместо Google Maps можно использовать RMaps. Мало того что это приложение легковеснее, так еще и гораздо более функционально.
  • Громоздкий Adobe Reader можно заменить Mupdf.
  • Читалок достаточно много. Из легковесных могу посоветовать AlReader и FBReader.
  • Из браузеров можно поставить Lighthing Browser, де-факто представляющий собой облегченный стандартный.
  • Чрезвычайно тяжелый клиент RSS-ридера Feedly лучше заменить на легкий FeedMe (осторожно, только для смартов).
   

 

Что дает root? (слово редактора)

Примерно год назад я написал статью об ускорении работы новых версий Android на устаревших аппаратах. В ней я рассказал о нескольких требующих прав root приемах, с помощью которых можно поднять производительность смартфона путем выгрузки из оперативной памяти всех некритичных для работы компонентов системы. Если кратко, то в статье было приведено пять основных методов:

  • Тюнинг механизма Low Memory Killer с целью научить систему выгружать фоновые приложения из памяти устройства быстрее, чем это происходит по умолчанию. Трюк требует модификации параметров ядра, а потому доступен только на рутованном устройстве. Используемые приложения: Auto Memory Manager или MinFree.
  • Удаление всех ненужных системных приложений из каталогов /system/app и /system/priv-app. Можно сделать с помощью любого файлового менеджера с поддержкой root.
  • Отключение ненужных системных приложений с помощью Bloatware Freezer, отключение их автозагрузки с помощью Autostarts.
  • Установка оптимизированного кастомного ядра и активация механизма Zram, а также алгоритма контроля насыщения TCP westwood. Разгон процессора.
  • Тюнинг подсистемы виртуальной памяти ядра с целью обеспечить более быструю выгрузку данных из кешей.
 

 

xakep.ru

Видео: Как пользоваться режимом разработчика в Android

Не раз нам приходили комментарии с просьбой рассказать поподробнее о режиме разработчика в Android. Многие знают, что это такое, но раз вопрос есть, то на него надо ответить.

Активация режима разработчика

Сначала надо активировать режим разработчика. Для этого надо перейти в настройки, найти вкладку “О телефоне”, а в ней поле “Номер сборки” и несколько раз часто тапнуть по нему. После этого в настройках самого смартфона появится новый пункт, который будет называться “Для разработчиков”.

Перед тем как начинать что-то делать, имейте в виду, что все действия производятся на свой страх и риск. Скорее всего, все будет нормально, но есть вероятность, что что-то может пойти не так и нормальное функционирование телефона будет нарушено.

Отчет об ошибке

Можно сформировать отчет об ошибке и отправить его туда, куда нужно. Но в некоторых случаях этот пункт недоступен или отсутствует вовсе. После нажатия на этот пункт начнет создаваться отчет, который создается несколько минут, а за прогрессом можно наблюдать в центре уведомлений. Когда отчет будет сформирован, его можно будет отправить, нажав на него, или отменить отправку, смахнув его в сторону, или сбросив все уведомления.

Пароль для резервного копирования

Пароль, который вводится для того, чтобы защитить ваши резервные копии от несанкционированного доступа, задается самим пользователем и может быть любым. Для того чтобы его задать, нужно открыть этот пункт настроек и ввести его. Если делаете это первый раз, то достаточно заполнить вторую и третью строчку. Если меняете, то надо вводить и установленный ранее пароль. Также можно и удалить пароль. Для этого надо ввести пароль, который был до этого, но не вводить новый.

Не выключать экран

Этот пункт может понадобиться когда вы хотите, чтобы при подключении питания экран оставался постоянно включенным. В обычной жизни это может пригодиться для того, чтобы пользоваться телефоном как часами или навигатором. Но злоупотреблять этим режимом не стоит, так как ресурс экрана не вечен.

Включить режим трансляции операций

Этот режим позволяет сохранять пакеты HCI Bluetooth в отдельном файле, который можно будет найти в специальной папке в памяти телефона. Нужно это в основном для разработчиков и специалистов по безопасности.

Заводская разблокировка

Пункт дает возможность разблокировать загрузчик. Не разблокирует, а только позволяет это сделать. Но если вы в этом не разбираетесь, то тоже лучше не заниматься этим и пройти мимо этого пункта. Тем более, если разблокировать его, то функции защиты не будут работать на устройстве.

Работающие приложения

Этот пункт наоборот может быть полезен простым пользователям, так как тут можно посмотреть сколько памяти “съедает” каждое приложение и остановить его. Если есть какие-то проблемы, то отсюда же можно отправить отчет об ошибке и просто поподробнее изучить сами приложения.

Отладка по USB

Отладка по USB нужна для того, чтобы можно было устанавливать соединение с компьютером используя Android Debug Bridge. Как правило это требуется для получения root-прав и модификации прошивок.

Запретить доступ для USB-отладки

Для отладки по USB требуется авторизовать компьютер для этой работы. Если вы не хотите, чтобы авторизованные ранее компьютеры имели доступ к отладке по USB и хотите, чтобы для них требовалась повторная авторизация, то для этого надо просто запретить доступ для USB-отладки.

Отчет об ошибке

Если активировать этот пункт, то в меню будет добавлена кнопка, которая позволяет создавать и отправлять отчеты об ошибках. По-умолчанию такая кнопка не активна, но после активации ее можно найти, если удерживать кнопку Power как для выключения. Раньше ее там не было, а после активации этого пункта она появляется.

Выбор приложения для фиктивных местоположений

В Android можно на программном уровне изменить свое местоположение не сходя с места. В некоторых играх, или приложениях это может пригодится. Этим можно будет разыгрывать друзей, или обманывать кого-то по поводу своего местоположения. В любом случае, все это можно сделать. Для этого надо скачать какое-нибудь приложения по запросу “Fake GPS” а настроить в нем новое положение. После этого в пункте “Выбрать приложение для фиктивных местоположений” выбрать его.

Сертификация беспроводных мониторов

Тут все понятно из названия. Можно включить отображение параметров сертификации беспроводных мониторов, если вам это нужно

Подробный журнал Wi-fi

Если есть желание подробно отслеживать работу Wi-Fi соединений, то вам сюда. Активировав этот режим, можно включить более подробные отображения в журнале.

Переключаться на мобильную сеть

Активация этого пункта позволит переключаться на мобильную сеть для передачи данных когда сигнал Wi-Fi становится слишком слабым. Но в этом случае надо не забывать про объем включенного трафика или его стоимость, если у вас не безлимит. Странно, что этот пункт спрятали сюда. Например, в iOS это называется ассистент Wi-Fi и находится в обычных настройках.

Не отключать передачу данных

Для быстрого переключения между сетями можно активировать значение, которое позволит не прекращать передачу данных через мобильную сеть даже при активном Wi-Fi подключении. В этом режиме будет проще и быстрее переходит от одной сети к другой.

Конфигурация USB

В этом пункте можно настроить то, что мы настраиваем в шторке уведомлений, когда телефон подключен к компьютеру. А именно режим работы USB. Но в данном случае можно выбрать не просто значение, а значение по умолчанию.

Отключить абсолютный уровень громкости

Этот пункт позволяет отключить абсолютный уровень громкости Bluetooth при возникновении проблем на удаленном устройстве. Под этим подразумевается, например, слишком громкий звук или невозможность его регулировки.

Визуальный отклик

Полезная вещь для любителей скринкаста. Она позволяет показать то место на экране, которого вы коснулись. На каждый день вряд ли пригодится, а для съемки скринкаста, обучающего видео или чего-то подобного может подойти.

Отображение касания

Для простого пользователя это больше просто развлечение, чем полезный инструмент, но тем не менее он позволяет отобразить зафиксированные точки касания экрана. Точки выстроятся в линию, если вы будете двигать пальцем по экрану. Также это может быть полезным, если вы захотите убедиться, что не сбилась калибровка экрана.

Показывать обновление поверхности

Если активировать данный пункт, то экран будет динамично подсвечиваться после обновления его содержимого. Для простого пользователя это может быть полезно например в том случае, когда телефон лежит с включенным экраном и в этот момент приходит сообщение или уведомление. Так будет проще не пропустить его.

Показывать границы элементов

Это пункт не имеет особой полезной нагрузки для простого пользователя. Просто можно увидеть где находятся границы элементов управления и экранных клавиш. Иногда может быть полезным, если хочеться проверить соответствие касаний расположенным элементам.

Написание справа налево

Этот пункт позволит расположить ползунки слева, а текст прижать к правому краю экрана. Просто все станет не так, как это общепринято. Нужно это возможно для левшей или просто людей, которые хотят сделать что-то необычное и немного изменить рутинный интерфейс своего смартфона.

Анимация

Настройка длительности анимации позволит визуально ускорить работу системы. Или наоборот сделать ее очень медленной. Второе возможно понадобится для того, чтобы разыграть не особо разбирающегося в тонкостях настроек друга.

Эмуляция дополнительных экранов

Позволит разработчикам имитировать различные размеры и разрешения экрана.

GPU-ускорение

Настройка позволяет заставить приложения использовать ускорение, если для них это не предусмотрено по умолчанию. Может существенно помочь в работе с графикой, но может и все испортить. Не рекомендовали бы увлекаться работой с этим пунктом.

Показывать обновление экрана

Настройка позволяет подсвечивать области экрана, которые были отрисованы графической подсистемой.

Включить 4x MSAA

Включение принудительной множественной выборки сглаживания. Но естественно надо иметь ввиду, что как и с любым графическим процессом, чем больше сглаживание, тем лучше выглядит картинка, но производительность при этом снижается.

Отключение передачи аудио (USB)

Настройка позволяет отключить автоматическую маршрутизацию на внешние USB-устройства.

Строгий режим

Настройка активирует режим мигания экрана, в том случае, если приложение использует главный поток для выполнения длительной и интенсивной операции.

Загрузка процессора

Позволяет отобразить на экране в виде цветной диаграммы загрузку центрального процессора, или графического чипа. При любых действиях диаграмма меняется и прокручивается. При этом, загрузку графического чипа можно отображать на экране, а можно записывать в специальный файл.

Не сохранять действия

Активация этого пункта позволит удалять сводку действий приложения после того как оно будет закрыто. Двоякое явление. Не всегда это будет хорошо.

Лимит фоновых процессов

Полезная опция для сохранения аккумулятора и производительности смартфона. Из названия видно, что она устанавливает лимит на количество фоновых процессов, которые могут работать одновременно.

Все ANR

Если хочется видеть уведомление системы о том, что приложение не работает или работает не так как должно, то активация этого пункта позволит получать подобные уведомления.

Неактивные приложения

В этом пункте находится встроенный диспетчер неактивных приложений, который позволит регулировать их активность.

Разрешить сохранение на внешние накопители

Если штатно для приложения не предусмотрена возможность установки на внешний накопитель, то активация этого пункта позволит это сделать независимо от “желания” приложения. Но не стоит забывать, что часто приложения не просто так отказываются устанавливаться на внешний накопитель и для этого есть свои причины. Поэтому, если активируете эту возможность, будьте готовы, что что-то может пойти не так.

Изменение размера многооконности

Настройка позволяет менять размер окон в режиме многооконности независимо от того, согласно ли на это приложение. Опять же, если разработчик был против этого, то наверняка у него были не это причины и лучше не лезть в это.

Отключение режима разработчика

Как и было сказано в начале, режим разработчика можно отключить. Хотя отключается он немного другим способом, нежели включается. Для отключения надо будет открыть настройки и перейти в раздел “приложения”. После этого нужно будет найти приложение “Настройки” и зайдя в него стереть все данные. Если это сделать, режим разработчика будет отключен. А если понадобится включить его снова, то сделать это можно будет там же способом, который был описан в начале.

Итоги

Мы рассказали вам про меню настроек разработчика и что означают основные пункты. Как вы поняли, большинство пунктов не для простых пользователей. Они понадобятся или тем, кто действительно является разработчиком, или тем, кто хочет на свой страх и риск поподробнее разобраться в возможностях операционной системы от Google. Еще раз добавим, что если навыков в этой области мало, то лучше даже не пробовать.

24hitech.ru

Увеличение времени работы от аккумулятора в Android M

По мнению многих разработчиков, в большинстве случаев к слишком быстрому разряду аккумуляторов смартфонов приводит плохая оптимизация приложений. В мае этого года в Google прошла очередная ежегодная конференция Google I/O, на которой было анонсировано много всего интересного для разработчиков. В частности, когда речь зашла об Android M, то одной из центральных тем были именно производительность мобильных устройств и продолжительность работы от аккумулятора. Давайте взглянем на новые функции и инструменты, которые помогут пользователям и разработчикам выжать ещё больше из аккумуляторов мобильных устройств.

Doze

Это один из главных инструментов в новой ОС для обуздания активности приложений, когда устройство находится в спящем режиме. На смартфонах под управлением Lollipop и более старых версий Android, любое приложение может вывести устройство из сна ради своего обновления, что позволяет поддерживать актуальность данных. Doze анализирует текущее состояние устройства и данные с акселерометра, определяет, когда смартфон не используется, и отправляет его в «глубокий сон». В этом режиме обновление приложений запрещается до тех пор, пока устройство не будет разбужено каким-то иным, более приоритетным событием. В режиме «глубокого сна» отключается сетевая активность, блокировки засыпания, предупреждения и задачи JobScheduler.

Как подсказывает опыт, часто обновляющиеся в фоновом режиме приложения являются одной из главных причин быстрого разряда аккумулятора. И Google придерживается того же мнения. На конференции была приведена информация, что планшеты Nexus 9 с запущенным Doze работали почти в два раза дольше в режиме ожидания.

Чтобы протестировать эту функцию, обновитесь до Android M, а затем с помощью команды ADB отключите зарядку устройства:

adb shell dumpsys battery unplug Doze может переводить устройство в один из нескольких режимов:
  • ACTIVE: дисплей включен.
  • INACTIVE: дисплей выключен, но устройство активно.
  • IDLE_PENDING: переход в состояние «глубокого сна».
  • IDLE: устройство спит.
  • IDLE_MAINTENANCE: короткий промежуток времени, в течение которого разрешается выполнение всех запланированных уведомлений и обновлений.
Между этими состояниями можно переключаться вручную:adb shell dumpsys deviceidle step Сколько времени нужно на перевод устройства в этот режим?adb shell dumpsys deviceidle Это позволяет получить много интересной информации о Doze. К примеру, на Nexus 6 (с включённым дисплеем) были получены следующие результаты:Whitelist system apps: com.android.providers.downloads com.android.vending com.google.android.gms Whitelist user apps: com.facebook.katana Whitelist app uids: UID=10012: true UID=10016: true UID=10026: true UID=10100: true mSigMotionSensor={Sensor name="Invensense Significant Motion Detector", vendor="Invensense Inc.", version=1, type=17, maxRange=1.0, resolution=1.0, power=0.3, minDelay=-1} mCurDisplay=Display id 0: DisplayInfo{"Built-in Screen", uniqueId "local:0", app 1440 x 2392, real 1440 x 2560, largest app 2413 x 2308, smallest app 1440 x 1356, mode 1, defaultMode 1, modes [{id=1, width=1440, height=2560, fps=60.0}], rotation 0, density 560 (494.27 x 492.606) dpi, layerStack 0, appVsyncOff 7500000, presDeadline 12666667, type BUILT_IN, state ON, FLAG_SECURE, FLAG_SUPPORTS_PROTECTED_BUFFERS}, DisplayMetrics{density=3.5, width=1440, height=2392, scaledDensity=3.5, xdpi=494.27, ydpi=492.606}, isValid=true mIdleDisabled=false mScreenOn=true mCharging=false mSigMotionActive=false mState=ACTIVE mInactiveTimeout=+30m0s0ms В первой части перечисляются процессы, аккредитованные Doze. Их активность никак не ограничивается. Обратите внимание, что в этот список вручную добавлен Facebook (Настройки —> Аккумулятор —> Facebook —> активировать «Отключить оптимизацию»). Далее идёт раздел с информацией с акселерометра и состоянием дисплея. Эти данные будут использоваться для последующего вывода устройства из состояния «глубокого сна». В данном примере дисплей включен, а значит Doze находится в режиме ACTIVE.

Период неактивности устройства установлен в 30 минут. Если выключить дисплей, этот раздел меняется:

mState=INACTIVE mInactiveTimeout=+30m0s0ms mNextAlarmTime=+28m26s193ms С выключенным дисплеем устройство переходит в режим INACTIVE и может переключиться в режим перехода в «глубокий сон». Таймаут также равен 30 минутам, и, согласно таймеру, из этого периода прошло около 1,5 минут. Вручную переводим устройство в IDLE_PENDING:mState=IDLE_PENDING mInactiveTimeout=+30m0s0ms mNextAlarmTime=+24m34s189ms mNextIdlePendingDelay=+5m0s0ms mNextIdleDelay=+60m0s0ms Спустя 30 минут пребывания в этом режиме, устройство перейдёт в IDLE. Таким образом, для перехода в «глубокий сон» требуется суммарно 60 минут. Переход:mState=IDLE mInactiveTimeout=+30m0s0ms mNextAlarmTime=+59m42s953ms mNextIdlePendingDelay=+5m0s0ms mNextIdleDelay=+2h0m0s0ms Через 60 минут сработает триггер, устройство пробудится и отправит все накопившиеся сообщения, инициализирует события и триггеры. Параметр mNextIdleDelay говорит о том, что следующее пробуждение из «глубокого сна» произойдёт через 2 часа. Получается следующая цикличность смен режимов: 1, 2, 4 и 6 часов. То есть самый большой промежуток между пробуждениями составляет 6 часов, 4 раза в сутки.

Как ведут себя приложения, когда устройство выходит из режима «глубокого сна»?

Можете самостоятельно протестировать своё приложение, отправив устройство в «глубокий сон»:

adb shell am set-idle <packageName> true С помощью той же команды его можно пробудить (введя значение false вместо true), и посмотреть, как активируются разные процессы, рассылаются и выполняются запросы.

Как видите, Doze является замечательным инструментом для экономии аккумулятора, когда устройство выключено.

Режим ожидания для приложений

В текущих версиях Android любое приложение имеет доступ к радиомодулю, даже в фоновом режиме. Иными словами, какое-нибудь давно скачанное и забытое вами приложение может втихую по несколько раз в день передавать какие-либо данные без вашего ведома. С помощью Doze это можно заблокировать запуск приложений, но они всё-равно смогут запускать процессы и обновляться, когда пользователь включает дисплей устройства. С помощью новой функции режима ожидания для приложений (App standby) можно приложениям, которые не запускались в активном режиме в течение какого-то периода времени (в днях), принудительно назначать режим ожидания. В этом режиме приложениям ограничивается доступ в интернет или запуск каких-либо процессов, пока смартфон не будет подключён к зарядному устройству. Тем самым экономится аккумулятор устройства.

Как работает режим ожидания для приложений? Если выполнить:

adb shell dumpsys usagestats то можно получить много информации об активности приложений за последний день/неделю/месяц и год. Напримерuser=0 In-memory daily stats timeRange="6/1/2015, 5:00 - 11:16 PM" packages package=com.google.android.googlequicksearchbox totalTime="00:36" lastTime="6/1/2015, 10:56 PM" inactiveTime="01:05" package=com.android.providers.calendar totalTime="00:00" lastTime="6/1/2015, 10:20 PM" inactiveTime="02:26" package=com.android.providers.media totalTime="00:00" lastTime="6/1/2015, 10:20 PM" inactiveTime="02:20" package=com.android.providers.downloads totalTime="00:00" lastTime="6/1/2015, 10:20 PM" inactiveTime="02:20" package=com.android.defcontainer totalTime="00:00" lastTime="6/1/2015, 11:10 PM" inactiveTime="00:00" package=android totalTime="00:00" lastTime="6/1/2015, 10:32 PM" inactiveTime="01:44" package=com.urbandroid.inline totalTime="00:00" lastTime="6/1/2015, 11:14 PM" inactiveTime="00:00" package=com.google.android.gm totalTime="00:00" lastTime="6/1/2015, 9:01 PM" inactiveTime="06:36" <snip> In-memory weekly stats timeRange="5/29/2015, 2:33 PM - 6/1/2015, 11:16 PM" packages package=com.amazon.mShop.android.shopping totalTime="01:04" lastTime="5/29/2015, 3:24 PM" inactiveTime="3:55:51" package=com.google.android.youtube totalTime="55:51" lastTime="5/31/2015, 2:04 AM" inactiveTime="1:09:00" package=com.android.providers.telephony totalTime="00:00" lastTime="5/29/2015, 2:56 PM" inactiveTime="5:37:10" package=com.android.sdm.plugins.connmo totalTime="00:00" lastTime="5/29/2015, 3:13 PM" inactiveTime="5:46:30" package=com.google.android.googlequicksearchbox totalTime="33:12" lastTime="6/1/2015, 10:56 PM" inactiveTime="01:05" package=com.android.providers.calendar totalTime="00:00" lastTime="6/1/2015, 10:20 PM" inactiveTime="02:26" package=com.android.providers.media totalTime="00:00" lastTime="6/1/2015, 10:20 PM" inactiveTime="02:20" package=com.google.android.apps.docs.editors.docs totalTime="00:00" lastTime="5/29/2015, 3:13 PM" inactiveTime="5:46:30" package=com.google.android.onetimeinitializer totalTime="00:00" lastTime="5/29/2015, 3:13 PM" inactiveTime="5:46:30" Встроенный в ОС алгоритм определяет дату последнего запуска приложения, и при необходимости переводит его в неактивный режим. Список таких приложений можно просмотреть, если зайти в меню настроек в пункт “Inactive apps”.

Производительность приложений

Наверное, все из вас оказывались в ситуации, когда аккумулятор смартфона садится слишком быстро, но непонятно, из-за чего это происходит. Если зайти в Настройки —> Батарея, то можно получить подробную статистику потребления энергии по каждому приложению:

В данном случае основные потребители заряда аккумулятора: ЦПУ (в том числе и в фоновом режиме), сетевой протокол и радиомодуль. Представленная статистика собрана за 28 часов, с момента полной зарядки аккумулятора. Также в Android M теперь доступно меню, с помощью которого можно «игнорировать оптимизацию». В этом случае отключаются Doze и режим ожидания для приложений. Это позволяет разработчикам тестировать производительность своих приложений как с включённой, так и с выключенной оптимизацией, выясняя, как это влияет на продолжительность работы от аккумулятора. А заодно как быстро устаревают данные в приложении.

GCM Network Manager

Замечательная новинка, для использования которой даже не требуется наличие Android M — её можно запускать на любых версиях ОС, вплоть до 2.3!

В вышедшем в конце прошлого года Lollipop появился JobScheduler API. На Android 5.0 и выше этот API отделяет от приложений все аппаратные предупреждения и блокировки засыпания, перенося их на уровень ОС. Это позволяет операционной системе агрегировать все эти события от разных приложений, тем самым уменьшая количество пробуждений и предупреждений, а значит и экономя заряд аккумулятора. Замечательно, вот только работает это на Lollipop и выше (на момент написания статьи, это примерно 12,4% Android-устройств).

Чтобы обеспечить тот же уровень производительности для сетевых соединений, в Google Play Services версии 7.5 добавят GCM Network Manager. Он использует фреймворк, аналогичный JobScheduler, но при этом будет работать на любых устройствах, где установлен Google Play Services (вплоть до Android 2.3, то есть на 99% всех Android-устройств). GCM Network Manager поддерживает такие же сценарии и режимы, что и JobScheduler, а также позволяет ограничивать количество сетевых подключений до тех пор, пока смартфон не будет подключён к зарядному устройству, а также использовать для больших обновлений исключительно Wi-Fi.

* * *

Все эти нововведения говорят о том, что Google озаботился производительностью приложений и старается дать разработчикам подходящие инструменты. Также мы теперь можем лучше контролировать поведение приложений ради снижения энергопотребления смартфонов.

habrahabr.ru

Обзор средств запуска и отладки приложений на Android / Песочница / Хабрахабр

Разрабатывая свое первое приложение под Android, я столкнулся с проблемой запуска приложения для проверки и отладки. Эта статья должна помочь начинающему пользователю выбрать средство эмуляции.
Содержание:
  1. Android Virtual Device (AVD)
  2. VirtualBox+Android x86
  3. Телефон с ОС Android, подключенный через USB
  4. Выводы
  5. Список используемой литературы
Android Virtual Device (AVD)
Установка: Это средство эмуляции встроено в Android SDK.

Настройка: (на примере использования в Eclipse) Window > Android SDK and AVD Manager > New Вписываем имя виртуального устройства, платформу, размер карты памяти, тип дисплея… Жмем Create AVD.

Запуск: Первый запуск эмулятор длиться очень долго, особенно на слабых устройствах. Например, я так и не смог дождаться первого запуска на своем нетбуке, а, запуская первый раз на компьютере, был уверен, что эмулятор ушел в вечный цикл. Последующие запуски эмулятора будут чуть шутрее. Время между нажатием кнопки «Run» и появлением главного активити тестового приложения на эмуляторе проходит в среднем 11 секунд. Замеры проводил на достаточно производительном компьютере.

Преимущества и недостатки: + возможность протестировать приложение на разных версиях ОС Android, на устройствах с разными типами дисплея… + различные настройки, необходимые для тестирования, например, смена ориентации экрана + эмуляция SD-карты — большой промежуток времени между нажатием кнопки «Run» и запуском приложения на эмуляторе — эмулятор работает очень медленно, например, то, что телефон обрабатывал 1-2 секунды, эмулятор делал за 8-10 секунд

VirtualBox+Android x86
Установка и настройка:
  1. Скачиваем и устанавливаем VirtualBox.
  2. Скачиваем образ.
  3. «Создаём виртуальную машину Linux 2.6/Other Linux, 512 Mb RAM, Bridged Network, HD 2 Gb, Disable Mouse Integration. Подключаем ISO файл и загружаемся одной из опций LiveCD (есть вариант HDPI и MDPI)» (с) или следуем этой инструкции.
  4. Нажимаем Alt-F1 для выхода в консоль и набираем netcfg и запоминаем IP адрес эмулятора. Для возврата к GUI, нажимаем Alt-F7.
  5. adb connect <IP адрес эмулятора>

Запуск: Время между нажатием кнопки «Run» и появлением главного активити тестового приложения на эмуляторе не засекал, но, по субъективным ощущениям, это происходит почти мгновенно.

Преимущества и недостатки: + маленький промежуток времени между нажатием кнопки «Run» и запуском приложения на эмуляторе + местами шустрая работа — достаточно длительная и иногда проблематичная установка — эмулятор работает местами медленно, имеются проблемы с изображением (особенно на MDPI) — проблемы с эмуляцией SD-карты, сменой ориентацию экрана,… — только два (три) доступные версии ОС Android и только два доступных типа дисплея

Телефон с ОС Android, подключенный через USB
Установка и настройка:
  1. Включаем на телефоне режим отладки. (Насторйки > Приложения > Разработка > Отладка по USB).
  2. Скачиваем драйвер для вашего телефона.
  3. Подключаем телефон к ПК.
  4. Устанавливаем драйвера. В Диспетчере устройств должен появиться раздел ADB Interface.
  5. adb devices. Если ваш телефон не отображается в списке, то переустанавливаем драйвер ADB.

Запуск: Между нажатием кнопки «Run» и появлением главного активити тестового приложения на телефоне проходит порядка 5 секунд.

Преимущества и недостатки: + возможность увидеть приложение так, как его будет видеть пользователь (очень важным момент, особенно при создании интерфейса и дизайна приложения) + мультитач (если есть в телефоне) + смена ориентации экрана, акселерометр (если есть в телефоне) — только одна версия ОС и один тип дисплея — на физическом рабочем столе появиться еще один объект

Выводы:
Я пробовал работать с каждым из этих средств эмуляции и остановился на таком варианте: 1. написание и тестирование приложения, используя телефон; 2. тестирование приложения на многочисленных Android Virtual Device с различными комбинациями версии ОС и типа дисплея. Надеюсь, что читающий сделал выбор эмулятора или почерпнул для себя что-то новое. Удачи в тестировании!
Список используемой литературы:
1. habrahabr.ru/blogs/android_development/109944 2. habrahabr.ru/blogs/android/119599 3. www.gizmonder.com/2011/03/android-adb.html

habrahabr.ru

Самые частые ошибки начинающих Android разработчиков

Android воистину фантастическая платформа для разработчика. Судите сами: исходный код android открыт, все инструменты разработки бесплатны, вы можете использовать их на любой операционной системе, Android хорошо документирован, процесс распространения и продажи приложений очень прост и хорошо описан. С момента выхода на рынок в 2008 году Android проделал большой путь. Сегодня вы можете пользоваться различными IDE для написания своих программ, но с недавнего времени единственной поддерживаемой Google средой является Android Studio, которая в свою очередь базируется на IntelliJ IDE. Android Studio делает многое для упрощения жизни разработчика, однако даже очень продвинутая IDE не способна заменить программисту голову, и в нашем коде по прежнему встречаются баги. В этой статье будут указаны наиболее характерные ошибки Android разработчиков. Конечно, наиболее часто они встречаются в коде новичков, однако и опытные программисты иногда встречаются с этими граблями.

Использование интерфейсных решений, характерных для iOS

Android и iOS активно конкурируют на рынке мобильных операционных систем. Многие разработчики пришли в Android из мира Apple. Не удивительно, что оказавшись в новой среде они пытаются использовать свой предыдущий опыт. Android и iOS имеют много общего, однако некоторые интерфейсные решения для них сильно отличается. Поэтому прежде чем начать разрабатывать Android приложения было бы неплохо ознакомиться с "Android design guidelines". Это поможет Вам понять экосистему Android, и вы не напугаете своих пользователей "нелогичным" интерфейсом.

Неиспользование интентов

Интенты - это одна из ключевых идей системы Android. С их помощью можно запросить данные или выполнение действий от других компонентов системы. Причем, вы можете обратиться как к частям собственной программы, так и к внешнему приложению. Современные программы многофункциональны, и вместо того, чтобы повторно изобретать велосипед и интегрировать его в свое приложение, можно через Android обратиться к другим, специально заточенным под решение требуемой задачи приложениям. Например, если вам нужно выбрать контакт пользователя, то длинный путь состоит в обращении к базе данных телефона, выгрузке этих данных в ListView, реализации логики выбора контакта в ListView. Опытный разработчик вряд ли будет городить все это, а с помощью Intent обратиться к книге контактов Android. Существует огромное количество задач, которые могут быть решены с помощью интентов: получение картинок и видео с камеры, проигрывание видео, установка напоминаний и будильника и многое другое. Просто и красиво.

Неиспользование fragments

В стародавние времена, еще до Honeycomb, Android приложения строились только на базе активити и сервисов. Это доставляло массу неудобств при написании программ, которые должны были работать как при альбомной, так и при книжной ориентации устройства. Ночи, проведенные за отладкой и адаптацией макетов не редко заканчивались убитыми об стену устройствами, а ремонт планшетов и телефонов не самое дешевое дело. Внесение в API концепции фрагментов существенно улучшило ситуацию. Фрагмент - это мини активити, которая может быть встроена в обычную активити. Причем можно встроить в активити сразу несколько фрагментов. Это позволяет писать более элегантный код, отрабатывающий изменение ориентации устройства.

Разработка для текущей версии Android

Пожалуй самой обсуждаемой в среде программистов проблемой Android OS является ее фрагментация. На рынке одновременно присутствует большое количество устройств, работающих под различными версиями операционной системы. Каждая версия имеет собственный API. Начинающие разработчики очень часто ориентируются на последнюю версию операционной системы, отсекая тем самым огромный кусок рынка. Опытные программисты ориентируются на более старые версии и используют для обратной совместимости "Android Support Library". На самом деле, нет никакой реальной необходимости писать под очень старые устройства. Например, ориентация на Ice Cream Sandwich позволяет покрыть 95% находящихся на рынке устройств.

Разработка для одного или двух экранов

Фрагментация проявляется и в том, что при разработке приложений программист вынужден учитывать, что его приложение будет запускаться на устройствах с различным разрешением и размером экранов. Попыткой решения этой проблемы было привязывание всех размеров к dp и sp. Тем не менее, при написании Android приложения разработчик должен постоянно переключаться между различными типами экранов, чтобы удостовериться, что его программа нормально отображается. Новички обычно забывают про это и тестируют свой софт на одном-двух телефонах. Это неправильно.

Блокирование основного (UI) потока

При запуске любого приложения Android создает поток выполнения, называемый главным потоком или UI потоком. В этом потоке обрабатываются события щелчка по экрану, рисование и обновление экрана. По умолчанию весь код выполняется именно в этом потоке. Это может вызвать проблему - если у вас выполняется какая-нибудь долгая операция внутри UI потока, то приложение будет "подвисать". Особенно это актуально для приложений, взаимодействующих с сетью. В новых версиях Android работу с сетью запрещено осуществлять из основного потока, но остается целый ряд потенциально "тяжелых" задач, которые могут подвесить ваше приложение. Примером таких задач служат загрузка изображений, чтение/запись в файл или базу данных, сложные вычисления. Выходом может стать помещение этих задач в отдельные потоки. Приведенный ниже код иллюстрирует загрузку изображения и отображение ее в ImageView. Опытные разработчики никогда не позволяют своим приложениям подвисать. Если вам не знакома эта тема, рекомендую почитать об AsyncTask и использовании ProgressBar.

Пренебрежение документацией

Android Developer website - очень хороший ресурс, содержащий массу полезной информации для Android разработчиков. Документация, уроки, спецификации, обзор лучших решений - все это можно найти на Android Developer website. Если Вы всерьез собираетесь заняться программированием под Android - этот сайт должен быть у Вас в закладках. Начинающим разработчикам можно также рекомендовать StackOverflow - online сообщество, где можно задать вопрос и получить на него квалифицированный ответ. Начинающий программист с почти стопроцентной вероятностью найдет здесь ответ на мучающий его вопрос.

Глубокая иерархия в макетах экранов

При разработке макетов экранов своих программ (layouts) начинающие разработчики почему-то полагают, что использование базовых layout структур автоматически гарантирует создание эффективных и оптимизированных макетов. На самом деле, каждый виджет и layout, добавленный в приложение увеличивает время отрисовки экрана. В частности, использование параметра layout_weight - довольно дорогое в плане затрат времени удовольствие. Гораздо эффективнее использовать RelativeLayout и выстраивать виджеты по отношению друг к другу. С другой стороны, использование вложенных друг в друга layout-ов тоже очень накладно с точки зрения расхода времени.

Неправильное использование картинок

Графика является одним из самых больших кусков современных приложений. Прежде чем попасть на экран картинка должна быть загружена в память. Новички часто сталкиваются с OutOfMemoryError, когда пытаются загрузить коллекцию изображений. Например, загрузка картинки 2448x3264 ARGB_8888 потребует 4 * 2448 * 3264 байт памяти (около 30 Мб). Если вы потом собираетесь использовать эту картинку для отображения через ImageView размером 200x200, то на самом деле вам нужно всего 4*200*200 байт (около 160Кб). Довольно расточительно тратить 32Мб, когда действительно используется только 160Кб. При загрузке изображений опытные разработчики используют Bitmap.createScaledBitmap(). Кроме того, не стоит загружать картинки в основном потоке.

Мобильное приложение не маленький проект

Эту ошибку делают все, кто впервые сталкивается с мобильной разработкой. Новички считают мобильные приложения простыми программами, для написания которых хватит выходных. Это заблуждение очень далеко от реальности. Разработка android программ ничем не отличается от написания любого другого софта. Вам также понадобится разрабатывать спецификации, планировать свое время, наладить багтрекинг и серьезно готовиться к релизу.

Заключение

Разработка для Android очень увлекательное занятие (или тяжелая работа, кому как нравится). Рассмотренные ошибки это лишь небольшой список граблей, которые затаились в ожидании неопытного android разработчика. Наверняка вы тоже сталкивались с ошибками, не попавшими в этот список. Поделитесь опытом.

Источник: Top rookie Android developer mistakes Александр Ледков17 сентября 2015

Please enable JavaScript to view the comments powered by Disqus.

www.mobilab.ru

Курс для разработчиков Android приложений. Часть 1. Приступаем к работе.

Перевод с сайта developer.android.com. Если не указано иное, этот контент распространяется под лицензией Creative Commons Attribution 2.5. Для получения дополнительной информации и ограничений, см. Лицензия контента.

Добро пожаловать на Курсы для разработчиков Android. Здесь вы найдете наборы уроков в рамках курсов, которые описывают, как выполнить определенную задачу с примерами кода, которые вы можете повторно использовать в вашем приложении.

Если данные курсы покажутся вам сложными или непонятными, смотрите более наглядные Видеоуроки по разработке android-приложений с нуля

Если вы не владеете начальными знаниями языка программирования java, добро пожаловать на Курс java для начинающих android-разработчиков

Первая группа уроков, Приступаем к работе, научит вас самому необходимому для разработки Android приложения. Если вы начинающий Android разработчик, вы должны выполнить  все эти курсы по порядку:

  1. Установить среду разработки Android Studio или Eclipse с Android SDK Tools
  2. Создать и запустить первое приложение на Android
  3. Добавить в android-приложение  поддержку различных Android устройств
  4. Узнать, что такое жизненный цикл Activity и как ним управлять
  5. Построить динамический пользовательский интерфейс используя фрагменты
  6. Реализовать сохранение данных в android-приложении
  7. Обеспечить взаимодействие с другими android-приложениями

 

1. Установка среды разработки android приложений

Чтобы создавать приложения для android, нужно установить необходимые компоненты, представляющие собой среду разработки и инструменты разработчика. Приложения для андроид-устройств пишутся на языке программирования java, поэтому в первую очередь нужно установить и настроить набор инструментов JDK  (Java Development Kit). Затем установите среду разработки на выбор: Android Studio или Eclipse, и набор инструментов Android SDK к ним.

Eclipse до недавнего времени был наиболее популярной средой разработки android, многие опытные разработчики продолжают его использовать.

Android Studio – более молодая среда разработки, тем не менее быстро набирающая популярность как более интеллектуальная и удобная. Кроме того, Android Studio активно развивается и поддерживается компанией Google как официальная среда разработки андроид-приложений.

Выбор среды разработки остается за вами, в наших уроках мы будем демонстрировать обе.

  1. Установка JDK  (Java Development Kit)

  2. Установка Android Studio

  3. Установка Eclipse (на выбор)

  4. Добавление пакетов Android SDK Manager

 

2. Создание вашего первого приложения

После того как вы установили и настроили среду разработки, познакомьтесь с основами разработки Android приложений.

  1. Создание Android проекта

  2. Запуск android-приложения

  3. Построение простого пользовательского интерфейса

  4. Запуск другой Activity – второго окна приложения

 

 

3. Поддержка различных Android устройств

Как построить свое приложение с использованием альтернативных ресурсов, чтобы обеспечить удобство использования вашего приложения на разных устройствах, от телефонов до планшетов.

  1. Поддержка различных языков в Android приложении

  2. Поддержка различных экранов Android устройств

  3. Поддержка различных версий платформы Android

 

4. Управление жизненным циклом Activity

О методах жизненного цикла Activity, и о том, как обеспечить юзабилити, реализуя callbacks методы жизненного цикла.

  1. Запуск Activity

  2. Приостановка и возобновление Activity

  3. Остановка и перезапуск Activity

  4. Повторное создание Activity

 

5. Построение динамического пользовательского интерфейса с использованием Фрагментов

Как построить пользовательский интерфейс для вашего приложения, который является достаточно гибким, чтобы представить несколько компонентов пользовательского интерфейса на больших экранах и ограниченного набора компонентов пользовательского интерфейса на экранах меньшего размера — основы для создания единого APK для телефонов и планшетов.

  1. Создание фрагмента

  2. Построение гибкого пользовательского интерфейса

  3. Связь с другими фрагментами

 

6. Сохранение данных

Как сохранить данные на устройстве, будь то временные файлы, загруженные из сети наборы файлов приложения, пользовательские файлы мультимедиа, структурированные данные, или что-то еще.

  1. Сохранение наборов ключ-значение

  2. Сохранение файлов

  3. Сохранение данных в SQL базу данных

 

7. Взаимодействие с другими приложениями

Как построить приложение, который использует другие приложения доступные на устройстве, чтобы выполнять расширенные пользовательские задачи, такие как захват фото или просмотр адреса на карте.

  1. Отправка пользователя в другое приложение

  2. Получение результата от Activity

  3. Разрешение другим приложениям запускать вашу Activity

 

Перевод с сайта developer.android.com. Если не указано иное, этот контент распространяется под лицензией Creative Commons Attribution 2.5. Для получения дополнительной информации и ограничений, см. Лицензия контента.

Часть 2. Создание android приложений с возможностью обмена данными>>

www.fandroid.info


Смотрите также