Вступай в группу во "ВКонтакте"!

Вступай в группу во "ВКонтакте"!

четверг, 17 ноября 2011 г.

Поворот устройства и дальнейшая работа Activity


           Любопытный момент - наподобие небольшого открытия сделали с товарищем, совместно делая приложение (игрушку). Некий абстрактный класс представляет собой наследника Activity (назовём его MyActivity). Реализует некие действия, отображает пользователю разметку, пользователь взаимодействует с элементами разметки и.. поворачивает в пространстве телефон (можно сэмулировать из-под Eclipse'а комбинацией Ctrl-F11 в Винде), что же происходит?!?!
              Разметка перестраивается и приложение через мгновения неожиданно валится!.. Смотрим лог.



               NullPointerException. Некий метод в другом классе, берущем объекты из MyActivity уже ссылается на нечто пустое. Что же произошло? Все объекты удалились, GC освободил память под дальнейшую работу.
Логируем буквально все callback-методы нашей рабочей активити:
- задаем сообщение в лог о создании/пересоздании активити. onCreate(), тобишь;
- задаем сообщение в лог об уничтожении нашей активити. onDestroy(), надо думать;
- ... лог всего, что происходит при переходах, повороте экрана.

Портретный режим. Производим некие действия..

Начальный лог показывает создание данного Activity

                   Приводим здесь результаты отслеживания поворота и лога сообщений в DDMS:
Повернули экран!

Наблюдаем наш лог. Callback-методы onDestroy-onCreate сработали.
     
            А произошло вот что. Заново сработал метод Activity - onCreate()! Вот это да..Оказывается, Activity удаляется при смене конфигурации, заново создается, стартуется, вообщем идет полный цикл жизни Activity от начала.
Это теоретически и документально подтверждается в свеже-задаренной мне книге у Рето Майера:
" При изменении языка, региона или аппаратной конфигурации Android прерывает работу всех приложений и затем запускает из повторно, перезагружая значения из ресурсов. " 
И тут же указывают возможные пути обработки или даже избегания такого явления:
" Чтобы заставить Activity отслеживать изменения конфигурации при выполнении программы, добавьте ее узел в манифесте атрибут android:condigChanged, указав, какие именно события хотите обрабатывать:
- orientation - положение экрана изменено с портретного на альбомное (или наоборот);
- keyboardHidden - клавиатура выдвинута или спрятана
- fontScale - пользователь изменил предпочтительный размер шрифта
.. "
         Надеюсь, кому-то это было в новость и сильно облегчит понимание логики работы android-приложения. Мотайте на ус, ребятки-девчатки.

воскресенье, 6 ноября 2011 г.

Чтиво

           Недавно вышедшая книжка (как обычно позиционируется как Бестселлер по данной теме!) - "Android 2. Программирование приложений".

            Задарили книгу за авторством Рето Майера (опытный дядька со стажем программирования приложений с GUI-интерфейсом в 10 лет). Книга толстая, обложка - твердая и красивая.

             Сразу же дают понять, что не стоит штудировать книгу как учебник и последовательно и послушно проходить главы одну за другой. Две первые главы предлагают пропустить тем, кто уже попробовал что-то написать под Android, ну или хотя бы разбирался в устройстве системы.
             Перевод устроил, другие книжки переведены просто
топорно и небрежно (я об этом http://www.ozon.ru/context/detail/id/6227194/). Доводится материал по файлам, созданию аккуратного и независимого от разрешения интерфейса, есть глава по базам данных SQLite. Навскидку почитал главу про намерения (Intents).
             Любопытны главы по службам (сам слабо их понял и никак не освоил принципы их написания и использования), создание собственных живых обоев (приятные красивые вещи, поставляемые в Android-устройство как приложение), работа с телефонией и смсками, взаимодействие с датчиками, вибрацией и прочими специфичными для телефонов элементами.

             Что характерно, эта книжка не поставляется с диском, на котором были бы все материалы, исходники, всё лежит для открытого доступа здесь: http://www.wrox.com
             Хорошие, распознаваемые иллюстрации, код, сопровождаемый до и после комментариями автора (стандартно как во всех подобных книжках). Будем почитать.

среда, 2 ноября 2011 г.

О чем это мы..

    Перспективные проекты, которыми мы планируем заниматься:
- простые по механике и содержанию игры. Что-то наподобие мини-игр, flash-игрушек с оригинальной идеей и простой реализацией. Состав команды невелик, а потому и наши амбиции не замахиваются на тяжеловесных монстров игрового мира;
- живые обои (LiveWallpaper). Особая тема, поддерживаемая в версиях Android 2.1 и позднее. Живые обои для Android - это те же обои, но только "живые". Под этим слово подразумевается, что они не только анимированные, но и то что они меняются при перелистывании рабочих столов на экране вашего Android устройства;
- разносторонние проекты, связанные с графикой, интернетом. Сейчас они имеют низкий приоритет.
Вот, набъём руку, возьмемся за свой клиент YouTube/LastFm/Amazon/Нужное-Подчеркнуть.

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

Слава годному блогу!

Начало положено. Мы открылись. Понеслась! Дело открыто. Заложен первый кирпич. Итак, приступим. Лед тронулся, господа присяжные заседатели. Позвольте здесь начать. Пущены первые ростки. История начинается здесь! Все только начинается..
...