Как стать автором
Обновить

Комментарии 46

Классно, а главное — понятно. Будем учится писать программы под Android.
Android привлекает тем, что несложно начать.
OpenSource же :) Открытый код — бери, кодь :)
ReactOS тоже OpenSource
бери, кодь :)
>несложно начать
открою вам тайну — это заслуга ЯП (java), а не системы.
Далеко не только в джаве дело, ещё и SDK отличный!
почитайте android fundamentals — откроете еще пару тайн.

там не просто жава, а фреймворк на жаве.
начать не сложно, сложно закончить
Закончить тоже не сложно. Достаточно попасть под бан гугла.
Отличная статья! Давно хотел начать писать под андройдом, но не знал с чего начать!
Тут главное терпение. Виртуальная машина действительно очень медленная. Но все работает даже на EEE PC 900.
Это зависит от железа компа :)
на eee pc 900 — 20 мин
на phenom 4 ядра — 5 мин
говорят на iMac — 1 мин
надо будет на своем «BIGBROTHER» проверить :)
на моем хакинтоше минуты полторы-две (C2D E8500/2GB)
у меня на кваде (q9400) секунд 30
так как есть андроид-девайс, то тестирую сразу на нем. быстрее получается :)
Со мной связался челове по скайпу и написал такие коментарии.
НЛО прилетело и опубликовало эту надпись здесь
Дмитрий: Хотел посоветовать приписать, что это способ влоб, при разработке серьезных приложений, так делать нельзя.

Для затравки стоит указать направление начинающим чтобы они сразу пошли правильной дорогой
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 с плюсом, попалась бы она мне раньше, было бы гораздо проще начинать! спасибо.
StringBuilder надо использовать осторожно, иначе на то же и выйдет.
Дмитрий:
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 = nodeList.getLength() — 1; i >= 0; i--)
спасибо
понятно и удобно
Извините за глупый вопрос, но где дизайн редактируется?
Редактора не нашел. Может плохо искал. Все писал руками в layout файлы. Может кто посоветует решения для разработки дизайна.
… достаточно просто переключить режим редактирования лайоута в eclipse :)
Где?
правый клик->open with->layout editor
вот здесь
www.droiddraw.org/
С первого взгляда не заметил ничего что использует возможности 2.2, поэтому target sdk стоит поставить 4, а minimal sdk 3. Это позволит запускать приложение на всех девайсах начиная с Android 1.5 и добавит возможность сделать различный арт для различных разрешений экрана.
Совершенно верно. Можно вообще 2 поставить.
Спасибо вам большое, как раз намедни искал нечто подобное!
я бы не рискнул купить телефон с андроидом…
Вы меня, конечно, извините, но даже для начинающих этот обзор имхо не годится — уж больно много тут вещей, которые нужно бы сделать по другому (начиная от minSkd, про который уже сказали и заканчивая SAX/XML PULL вместо DOM)
Напишите! А мы почитаем )
тут, увы, нужно слишком много всего переписывать :(
написал ниже
Можете прокоментировать подробней? Буду очень признателен.

Пишу следующую статью.
по андроиду:
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 нет никакого смысла — она по-дефолту вполне себе умеет в интернет ходить
стартует виртуалка на более-менее современных компах всего минуту (первый запуск может чуть подольше — пара минут), приложение деплоится за секунды

ну вот примерный список после прочтения по диагонали — сами видите, что замечаний предостаточно, причём многие я считаю критическими
Ценные замечания. Благодарю.

Не все пока понятно, но буду работать.
вот здесь можно создавать интерфейс приложений. просто и наглядно
www.droiddraw.org/
Было бы просто супер, если описали коротко какие библиотеки для чего.
а где реализация ArrayAdapter? он кастомный?

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