Miasto Programistów – trochę teorii, trochę praktyki część 1

Krzysztof Kulpiciński Android 2012-01-16

Miasto Programistów

Większość kursów programowania na Androida jest zdecydowanie praktyczna. Dostajemy kod, ale czy to ma sens skoro go nie rozumiemy?

Chcę by Miasto Programistów było długofalowym kursem praktycznym, jednak o podłożu teoretycznym. Chcę pokazać Wam jak należy programować na przykładach, ale również tworząc z Wami aplikacje. Najpierw chcę, żebyście zrozumieli jakimi mechanizmami posługują się aplikacje na Androida. Jednym zdaniem; nie chcę, aby ktoś, kto znalazł ten cykl, jedynie kopiował kod, chcę by go zrozumiał. Android ma bardzo klasyczne podejście do programowania, jednak należy zaznaczyć, że nie posiadamy tutaj żadnej metody main(). Program na Androida może mieć kilka punktów wejścia. Każdy element aplikacji odpowiada za inne działanie.

Niestety urządzenia mobilne mają bardzo ograniczoną moc obliczeniową oraz pamięć, dlatego ważne jest, aby zrozumieć, kiedy należy zwolnić zasoby, a kiedy je znowu przywrócić. Pomoże nam w tym zapoznanie się z cyklem życia aktywności. Aplikacje korzystają z wielu aktywności, aby uruchomić jedną z nich należy zrozumieć działanie kontekstu aplikacji oraz intencji. Te wszystkie rzeczy postaram się zawrzeć w pierwszej części nowego cyklu. Oczywiście do czynienia mamy z językiem Java. Jest to dosyć popularny język programowania, dlatego przed rozpoczęciem czytania kursu radzę zapoznać się z podstawami Javy (warto wiedzieć na przykład co to jest Garbage Collector, czy Maszyna Wirtualna).

Teoria jest ważna!

Aktywnością jest ekran interfejsu użytkownika odpowiedzialny za wykonywanie danej fazy programu. W jednej aplikacji może występować ich wiele. Obowiązkiem każdej z nich jest zapisywanie swojego stanu. Aktywności układają się w stos, to znaczy ostatnio otwarty ekran znajduje się na samej górze stosu. Aktywność jest jak najprawdziwszy organizm, posiada swój cykl życia i jego zrozumienie pozwoli Wam na dobre zarządzanie zasobami.

onCreate(Bundle) – jest to metoda wywoływana przy pierwszym uruchomieniu aplikacji. Można ją zastosować do jednorazowej inicjacji.
Najczęściej tworzymy w niej interfejs użytkownika oraz wywołujemy własne metody. onCreate() jako jedyna z całego cyklu przyjmuje parametr, jest nim najczęściej uprzednio zapisany stan aplikacji.
onStart() – wywoływana jest za każdym razem, gdy aktywność jest wyświetlona użytkownikowi.
onResume() – jest to bardzo ważny element całego cyklu życia. Metoda ta działa za każdym razem, gdy możliwa jest interakcja z użytkownikiem (np. rozpoczęcie odtwarzania, czy przywrócenie zasobów do pamięci).
onPause() – jest to pierwsza wywołana metoda, gdy aplikacja przesunięta jest w tło. Należy w niej zwolnić wszystkie zasoby oraz zatrzymać interakcję z użytkownikiem.
onStop() – gdy aplikacja nie jest już potrzebna podlega zatrzymaniu. Niestety na urządzeniach z małą ilością pamięci RAM często jest ona pomijana na rzecz całkowitego wyłączenia aplikacji.
onRestart() – metoda wywoływana jedynie po wznowieniu ze stanu zatrzymania.
onDestroy() – działa przed samym wyłączeniem aplikacji.

Intencją opisujemy określone działanie, najprostsze przykłady to „uruchom nową aktywność”, „zadzwoń na podany numer”, czy też ”uruchom kamerę”. Każda czynność w Androidzie przechodzi przez intencje. Oto bardzo prosty przykład uruchamiania nowej aktywności:

Intent I = new Intent(this, MyActivity.class);
StartActivity(I);

Intencja I ma uruchomić klasę rozszerzającą aktywność o nazwie MyActivity.

Usługi są zadaniami uruchomionymi w tle. Jeżeli chcemy wykonać jakieś dłuższe obliczenia, lub pobierać dane, a nawet odtwarzać muzykę, musimy wykorzystać usługi.

Kontekst pomaga nam w otrzymywaniu dostępu do wszystkich danych systemowych. Dzięki niemu możemy pobierać numer identyfikacyjny elementu (ID), uruchamiać aktywności lub określać gdzie dany element ma zostać uruchomiony.

Praktyka również…

Po przerobieniu teorii czas na obiecaną praktykę, a więc przygotujemy Sobie środowisko pracy.

Krok 1. Pobieramy Java JDK z adresu http://www.oracle.com/technetwork/java/javase/downloads/index.html

JDK

Krok 2.
Wchodzimy na stronę http://www.eclipse.org/downloads/ skąd pobieramy Eclipse IDE for Java Developers (wybieramy wersję odpowiednią dla naszego systemu operacyjnego).

Krok 3. Pobieramy ostatnią wersję Android SDK dostępną pod tym adresem: http://developer.android.com/sdk/index.html – najprościej, gdy pobierzecie  wersję instalowaną.Android SDK
Krok 4.
Instalujemy SDK. Bardzo często wyskakuje błąd informujący nas o braku JDK. W takim wypadku jedynym ratunkiem jest kliknięcie back, a następnie next, wtedy powinno wszystko działać.

Krok 5. Wybieramy interesujące nas elementy i czekamy cierpliwie na pobranie.

Android SDK
Krok 6.
Brawa! Zbliżamy się do końca, uruchamiamy Eclipse. Po załadowaniu wchodzimy w Help -> Install New Software… Dodajemy tam adres wtyczki ADT, a następnie ją pobieramy.

ADT
Wtyczkę znajdujemy pod adresem: http://dl-ssl.google.com/android/eclipse/

Krok 7. Wchodzimy w Window -> Preferences, wybieramy zakładkę Android i wskazujemy ścieżkę do SDK.

Gratulacje, pierwsza część kursu ukończona i to w 7 prostych krokach!

Źródło: własne



  • 4ib3r

    O ile mnie pamięć nie myli to onCreate jest wywoływane również przy zmianie orientacji ekranu, wiele osób o tym zapomina i później obracamy ekran a aplikacja się restartuje.

  • majko7

    Witam,
    mam problem w kroku nr 5. Pojawia mi się następujący komunikat:
    [img]http://zapodaj.net/images/647cb30d9313.jpg[/img]
    [url]http://zapodaj.net/647cb30d9313.jpg.html[/url]
    Domyślam się, że problem nie jest duży, więc nie zakładam nowego tematu na forum. Proszę o pomoc i z góry dziękuję.

  • drake29a

    Kurs jak kurs, do programowania trzeba smykałki, i konkretnych podstaw Javy, w tym umiejętności kombinowania (Polakom zwykle tego nie brakuje), znajomości języka angielskiego, i umiejętności korzystania z dokumentacji javy/androida. A samodzielność to podstawa, nie jeden raz spotkałem się z przypadkiem gdzie ktoś nie wiedząc co zrobić zadawał głupie pytanie, zamiast poszukać odpowiedzi.

  • ramzixp

    @baca130

    ilość durnych postów dopiero się zwiększy przez tego typu artykuły, który akurat robi z programowania… kurs , wygląda jak dawne kursy HTML dla niedorozwojów 🙂

    ———–
    Co ja powiem osobom, które się cieszą, że „WRESZCIE JEST PO POLSKU”? Nigdy nie będziecie programować !
    Do tego jest wymagana choć odrobina angielskiego. Dokumentacja techniczna przede wszystkim.

    Jaja sobie robicie publikując ten artykuł. Autor powinien postawić na programowanie, a nie obrazkowe pokazanie jak zainstalować Eclipse:|

    Druga sprawa, nie spolszcza się słów Intent czy Activity, później taki „programista” przyjdzie na forum i będzie sypał słownictwem, a my będziemy patrzeć, nie wiedząc o co chodzi i jak mu pomóc.

    Autorze, skoncentruj się na programowaniu, a nie prowadź kolejnego kursu dla jełopów. Później na forum w dziale programowania pojawiają się dziesiątki wpisów z durnymi pytaniami, bo delikwent nie ma ochoty/czasu/chęci przeczytać książki po angielsku, a Java to dla niego postać ze Star Wars.

  • zwusik

    W kroku 6 podany link do wtyczki ADT nie działa.Wtyczkę ja pobrałem ze strony http://dl.google.com/android/ADT-16.0.1.zip.
    Jedynie przy instalacji podałem ścieżkę do pliku na dysku(oczywiście plik trza rozpakować)

    • susu69

      Dzięki wielkie, coś mi nie hasał tamten link:D

  • baca130

    Nareszcie zmniejszy się ilość durnych postów typu „Jak zacząć”.

  • Sait

    Tez chętnie naucze sie 🙂 szczegolnie ze planowalem 🙂

  • Sztofel

    o… sympatyczny temat widze sie zaczal, w koncu cos konkretnego! czekam na kolejne czesci i dziekowac 🙂

  • susu69

    2.2 jeszcze nie umarł, trzyma się całkiem dobrze i chętnie go pomęczę!:D

  • brut-all

    Przecież teorię wykłada od A-Z i chyba w najbardziej przystępnej formie Dev Guide na stronie głównej Androida. To jest zresztą połączenie idealne do nauki: teoretyczny Dev Guide, osobno rozpisane całe API, praktyka poprzez dużą ilość przykładów oraz artykuły opisujące sposoby radzenia sobie z typowymi problemami (wydajność, różne ekrany, user experience, itd.). Lepiej być po prostu nie może.

    Jeśli chodzi jedynie o język angielski, to raz, że lepsze moim zdaniem by było bezpośrednie tłumaczenie treści na d.android.com , a dwa, że programista daleko nie zajdzie, trzymając się tylko pl.

    • choma

      Ha, masz racje. Dev Guide jest świetne, ale nie każdy zna angielski w wystarczająco dobrym stopniu, wiec czemu nie zachęcać ludzi po polsku? 🙂

  • torront

    Czy ten kurs będzie tylko dla osób, które już potrafią programować w javie, czy dla zielonych też? 😛

    • choma

      Nie wiem jak autor ale chyba nie ma co powtarzać rzeczy które są już w internecie, a poradników do Javy troche jest 🙂

  • Mateusz77

    A bedzie vos o opengl?

  • koldy

    HOHO! W końcu ktoś mądry wpadł na pomysł stworzenia poradnika w programowaniu pod Android! Mam nadzieje, że cykl wydawniczy nie będzie trwał miesiąc, albo więcej. Sam chętnie skorzystam, oraz Android.com.pl, gdyż mało jest poradników na ten temat, a ludzie tego poszukują.

  • Barilla

    Pół roku temu chciałem się pobawić robieniem jakichś prostych aplikacji… poddałem się po tym jak błąd o braku Javy wyskoczył mi na 3 różnych komputerach na których reinstalowałem jave i SDK chyba z 40 razy w sumie… a wystarczy kliknąć back i next

    • pulpet

      albo ściągnąć wersję w *.zip 😉 wtedy nie ma żadnej instalacji

  • maryl16

    Świetny pomysł. Właśnie chciałem zacząć przygodę z programowaniem na Android, ale niestety internet ubogi jest w poradniki robiona porządnie, a książek o tej tematyce jest jak na lekarstwo.
    Czekam na więcej 😀

    • Mistrzz

      Proszę, powiedz, że z tym internetem żartowałeś…

      • pulpet

        Może chodzi o to, ze w internecie często wszystko jest niepoukładane 😉

  • tomqz

    Hmmm… na jakiej wersji Androida będziecie tworzyli tutoriale?

    • pulpet

      to zależy czego Wy chcecie 😉 niestety do tabletu na razie nie mam dostępu, ale pewnie będzie to Gingerbread, skoro Eclair i Froyo umierają, jeżeli jednak użytkownicy któregoś z nich podniosą głosy, że chcą starsze SDK, to się do tego podporządkuję 😉

      • kurator

        Myślę, że należy pozwolić Froyo i Eclair umrzeć godnie i nie grzebać w trupach 🙂 Super pomysł, trafiłeś w 10 bo właśnie zakupiłem książkę „Java 2-podstawy” i zamierzam rozpocząć przygodę z tym językiem programowania. Znasz może tą książkę?

        • choma

          Ja znam i choć programistą nie jestem to według mnie jest godna uwagi.

      • tomqz

        2.3 jak najbardziej 🙂

  • RadekMM

    Jak już pisali poprzednicy – świetny pomysł i super czas (właśnie nauczyłem się pokazywać obrazki na swoim androidzie). Tak więc trzymam kciuki by cykl dotrwał do zaawansowanych zagadnień…. 🙂 i oby nie było to zrobienie „sudoku” 🙂

  • rafal_0

    Fajny pomysł, i mam nadzieję że będzie dobrze prowadzony, może i ja napiszę coś na androida.

  • zwyciezca

    Fajny pomysł, oby ten cykl szybko nie umarł 😉

  • komandosik

    Oo tak, od kilku dni myślałem żeby zająć się nauką programowania pod androida… z racji braku pewnych aplikacji w markecie… no to macie kolejnego stałego czytelnika 😉

  • mst

    Czekamy na kolejne części.
    Może coś o SQlight lub OCR? 🙂

    • tomqz

      Chyba raczej SQLite 😉

    • emilyo

      OCR??? A co ma OCR wspólnego z programowaniem na Androida? OCR to tylko i wyłącznie sztuczna inteligencja i przetwarzanie obrazu.

  • kubabest

    Jeśli byś mógł, myślę, żę wideo poradnik mógłby być lepszym rozwiązaniem,niż tekstowy.

    • gmad

      A ja uważam, że taka forma jest lepsza. Można na koniec zrobić z niej ładnego E-booka. Już dziś zgłaszam się na ochotnika na free łamanie tekstu.

  • Snartvar

    Sądzę, że taki kurs może być bardzo pomocny, gdyż jest zapewne dużo osób, które chciałoby bardziej poznać strukturę swojego ulubionego systemu a nie wiedzą dokładnie co potrzeba i jak się do tego zabrać by móc pisać małe aplikacje na ulubioną platformę.
    Jednym zdaniem; kurs zapowiada się naprawdę obiecująco i mam tylko nadzieję, że Autorowi nie zabraknie zapału (bo nieraz, niestety różnie z tym bywa) do dalszej jego kontynuacji.

  • mastertoon

    Ah ostatnio chodziło mi po głowie programowanie… 🙂
    No właśnie, co jaki czas będzie się ukazywał poradnik?

  • lukasss_pl

    Extra, czekamy na więcej! Co jaki okres czasu będą ukazywały się kolejne części poradnika?



x