Комментарии 46
Классно, а главное — понятно. Будем учится писать программы под Android.
Android привлекает тем, что несложно начать.
OpenSource же :) Открытый код — бери, кодь :)
>несложно начать
открою вам тайну — это заслуга ЯП (java), а не системы.
открою вам тайну — это заслуга ЯП (java), а не системы.
начать не сложно, сложно закончить
Отличная статья! Давно хотел начать писать под андройдом, но не знал с чего начать!
Рекомендую, кстати, статью с сайта IBM: www.ibm.com/developerworks/ru/library/x-android/
Очень понятное и полезное руководство
Очень понятное и полезное руководство
Со мной связался челове по скайпу и написал такие коментарии.
Дмитрий: Хотел посоветовать приписать, что это способ влоб, при разработке серьезных приложений, так делать нельзя.
Для затравки стоит указать направление начинающим чтобы они сразу пошли правильной дорогой
www.youtube.com/watch?v=xHXn3Kg2IQE&playnext_from=TL&videos=SF9H436Fikg
Тут как раз инженер гугла все рассказывает, очень поучительно через час все поймете сами.
— нельзя держать все в памяти, потому что жизненный цикл приложений андроида в любой момент это все похерить, нужно писать в базу, возвращать курсор и строить список при помощи CursorAdapter
— памяти и ресурсов очень мало, поэтому использовать org.w3c.dom.* для разбора XML будет очень дорого, лучше saxparser и сразу в базу без промежуточного сохранения в памяти
title = "\n" + selectedRssItem.getTitle() + " ( "
+ sdf.format(selectedRssItem.getPubDate()) + " )\n\n";
дорогая операция, много мусора от нее остается, лучше использовать StringBuilder для конкантенации строк
— где-то еще видел создание объекта в функции, когда его инициализацию можно вынести в конструктор, но это уже не на столько важно
А так статья просто отличная, на 5 с плюсом, попалась бы она мне раньше, было бы гораздо проще начинать! спасибо.
Для затравки стоит указать направление начинающим чтобы они сразу пошли правильной дорогой
www.youtube.com/watch?v=xHXn3Kg2IQE&playnext_from=TL&videos=SF9H436Fikg
Тут как раз инженер гугла все рассказывает, очень поучительно через час все поймете сами.
— нельзя держать все в памяти, потому что жизненный цикл приложений андроида в любой момент это все похерить, нужно писать в базу, возвращать курсор и строить список при помощи CursorAdapter
— памяти и ресурсов очень мало, поэтому использовать org.w3c.dom.* для разбора XML будет очень дорого, лучше saxparser и сразу в базу без промежуточного сохранения в памяти
title = "\n" + selectedRssItem.getTitle() + " ( "
+ sdf.format(selectedRssItem.getPubDate()) + " )\n\n";
дорогая операция, много мусора от нее остается, лучше использовать StringBuilder для конкантенации строк
— где-то еще видел создание объекта в функции, когда его инициализацию можно вынести в конструктор, но это уже не на столько важно
А так статья просто отличная, на 5 с плюсом, попалась бы она мне раньше, было бы гораздо проще начинать! спасибо.
Дмитрий:
for (int i = 0; i < nodeList.getLength(); i++)
не помню реалищует ли NodeList интерфейс Iterable, если да, то лучше делать такие штуки for (obj1: obj2) (foreach типа), если нет, то результат nodeList.getLength() помещать в локальную переменную перед циклом
developer.android.com/guide/practices/design/performance.html
for (int i = 0; i < nodeList.getLength(); i++)
не помню реалищует ли NodeList интерфейс Iterable, если да, то лучше делать такие штуки for (obj1: obj2) (foreach типа), если нет, то результат nodeList.getLength() помещать в локальную переменную перед циклом
developer.android.com/guide/practices/design/performance.html
спасибо
понятно и удобно
понятно и удобно
Извините за глупый вопрос, но где дизайн редактируется?
Редактора не нашел. Может плохо искал. Все писал руками в layout файлы. Может кто посоветует решения для разработки дизайна.
вот здесь
www.droiddraw.org/
www.droiddraw.org/
С первого взгляда не заметил ничего что использует возможности 2.2, поэтому target sdk стоит поставить 4, а minimal sdk 3. Это позволит запускать приложение на всех девайсах начиная с Android 1.5 и добавит возможность сделать различный арт для различных разрешений экрана.
Спасибо вам большое, как раз намедни искал нечто подобное!
я бы не рискнул купить телефон с андроидом…
Вы меня, конечно, извините, но даже для начинающих этот обзор имхо не годится — уж больно много тут вещей, которые нужно бы сделать по другому (начиная от minSkd, про который уже сказали и заканчивая SAX/XML PULL вместо DOM)
Напишите! А мы почитаем )
Можете прокоментировать подробней? Буду очень признателен.
Пишу следующую статью.
Пишу следующую статью.
по андроиду:
minSdk можно (и нужно) ставить 4, а не 8
listView можно использовать через ListActivity
list_item нет смысла делать fill_parent по высоте, насколько я понимаю
ListView не нужно делать wrap_content
все размеры стоит вынести в одно место (или даже скорее проинклюдать вьюшки)
//Bundle extras = getIntent().getExtras(); я так понимаю вы неосилили и поэтому храните текущий Item как статик в главной активити?
по коду:
SimpleDateFormat стоит прокэшировать
код
SimpleDateFormat стоит закэшировать
ps освойте уже, наконец
1) форматирование кода и
2) форматирование XML, оно ведь даже в eclipse работает (плохенько, но хоть как-то)
3) optimize imports
minSdk можно (и нужно) ставить 4, а не 8
listView можно использовать через ListActivity
list_item нет смысла делать fill_parent по высоте, насколько я понимаю
ListView не нужно делать wrap_content
все размеры стоит вынести в одно место (или даже скорее проинклюдать вьюшки)
//Bundle extras = getIntent().getExtras(); я так понимаю вы неосилили и поэтому храните текущий Item как статик в главной активити?
по коду:
SimpleDateFormat стоит прокэшировать
код
ArrayList<RssItem> rssItems = new ArrayList<RssItem>();Блох советует писать как
ArrayList<RssItem> rssItems = new ArrayList<RssItem>();(однако для как минимум android <2.2 ваш способ всё же правильнее с т.з. перфоманса)
SimpleDateFormat стоит закэшировать
ps освойте уже, наконец
1) форматирование кода и
2) форматирование XML, оно ведь даже в eclipse работает (плохенько, но хоть как-то)
3) optimize imports
дальше:
про DOM vs SAX/PULL — ну тут всё понятно
onClickListener у вас синхронный, насколько я вижу, что есть страшное зло
адаптер лучше использовать resourceCursor через провайдер и сервис
интент лучше вызывать явно по имени класса, а не по action'у, я думаю
кастомизировать AVD нет никакого смысла — она по-дефолту вполне себе умеет в интернет ходить
стартует виртуалка на более-менее современных компах всего минуту (первый запуск может чуть подольше — пара минут), приложение деплоится за секунды
ну вот примерный список после прочтения по диагонали — сами видите, что замечаний предостаточно, причём многие я считаю критическими
про DOM vs SAX/PULL — ну тут всё понятно
onClickListener у вас синхронный, насколько я вижу, что есть страшное зло
адаптер лучше использовать resourceCursor через провайдер и сервис
интент лучше вызывать явно по имени класса, а не по action'у, я думаю
кастомизировать AVD нет никакого смысла — она по-дефолту вполне себе умеет в интернет ходить
стартует виртуалка на более-менее современных компах всего минуту (первый запуск может чуть подольше — пара минут), приложение деплоится за секунды
ну вот примерный список после прочтения по диагонали — сами видите, что замечаний предостаточно, причём многие я считаю критическими
вот здесь можно создавать интерфейс приложений. просто и наглядно
www.droiddraw.org/
www.droiddraw.org/
Было бы просто супер, если описали коротко какие библиотеки для чего.
а где реализация ArrayAdapter? он кастомный?
просто сейчас заткнулся именно на этом адаптере. не понятно немного.
просто сейчас заткнулся именно на этом адаптере. не понятно немного.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Простой RSS-клиент на Android