Android

You might also like

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 43

I

Tomislav Gudelj
Vipnet d.o.o.
Vip 2010

Uvod u Android za sadanje i budue developere

> Openito o Android OSu


> Android OS iznutra
> Tips & tricks

Page 2

25/05/15

TSD

Vip 2010

Za vas dvoje u zadnjem redu koji jo niste uli za


Android
> Android je otvoreni operativni sustav razvijen od tvrtke Android
Inc.
> Temelji se na Linux jezgri, bibliotekama otvorenog koda, primarni
jezik za razvoj aplikacija je Java
> Prva javna inaica 1.1 izdana je 9.2.2009
> Slobodni market svatko moe objaviti aplikaciju
> Besplatni, kvalitetni razvojni alati

Page 3

25/05/15

TSD

Vip 2010

Preko trnja do zvijezda (u malo vie od godinu


dana)

Q1: Koja je trenutno aktualna inaica Android OSa?


Inaice Android OS-a:
Datum izdavanja

Inaica

API level

09.02.2009

1.1

1.5

1.6

2.0

2.01

2.1

2.2

20.05.2010
Page 4

25/05/15

TSD

Vip 2010

7 verzija u ~godini dana !?!

Zar moram aplikaciju pisati za X razliitih verzija!?!


Naravno da ne!
API-ji su forward compatible, npr. Kod pisan za 1.6
raditi e i na 2.0 i na 2.2.

Page 5

25/05/15

TSD

Vip 2010

Trenutno stanje

Page 6

25/05/15

TSD

Vip 2010

Trenutno stanje, nastavak

Page 7

25/05/15

TSD

Vip 2010

Zato bi Android trebao biti zanimljiv


developerima
(sadanjim i buduim)?

Page 8

25/05/15

TSD

Vip 2010

Q2: Koji je mobilni OS trenutno


najrasprostranjeniji u svijetu
> iOS?
> Android?
> Windows Mobile?
> BlackBerry?
> Symbian!
Symbian?
>

Page 9

25/05/15

TSD

Vip 2010

Its not (only) about the phones

Page 10

25/05/15

TSD

Vip 2010

Jo malo statistike

Page 11

25/05/15

TSD

Vip 2010

Android market iznimna prilika za neovisne


developere

> Otvoreni market


> Sve aplikacije su ravnopravne
> Uspjeh vae aplikacije ovisi iskljuivo o VAMA!

Page 12

25/05/15

TSD

Vip 2010

Android market developer console

Page 13

25/05/15

TSD

Vip 2010

QR kodovi best thing since sliced bread


> Jednostavan i efektan nain distribucije aplikacije
> QR kod sadri link za instalaciju vae aplikacije
> Ne mora biti u digitalnom obliku, tovie...

Page 14

25/05/15

TSD

Vip 2010

Q3: U kojoj zemlji i/ili kojoj industriji su nastali QR


kodovi
> Japan, auto industrija (Toyota)

Page 15

25/05/15

TSD

Vip 2010

Android operativni sustav

> Operativni sustav otvorene arhitekture i otvorenog koda


> Od samog poetka usmjeren ka minimizaciji
> Potronje energije
> Potronje memorije
> Potronje CPU ciklusa
> Developer friendly
> Kompleksnosti OSa skrivene iza Java APIja
> Managed environment
> Moni razvojni alat (Eclipse + Android SDK plugin)

Page 16

25/05/15

TSD

Vip 2010

Page 17

25/05/15

TSD

Vip 2010

Osnovni Android pojmovi za developere


>
>
>
>
>

Activity
Task
Intent
Broadcast receiver
Service

Page 18

25/05/15

TSD

Vip 2010

Tips & tricks

>
>
>
>

Korisniko suelje
Brzina je vrlina
Dont fight the system
Tko tedi taj vrijedi

Page 19

25/05/15

TSD

Vip 2010

Korisniko suelje

> Iznimno je vano da vaa aplikacija bude INTUITIVNA


> Nemojte iznevjeriti oekivanja korisnika, potujte konvencije:
> tipka "back" uvijek treba imati znaenje povratka na prethodni
ekran
> tipka menu uvijek treba imati znaenje odabira opcija i
postavki
> nemojte skrivati statusnu traku
> koristite "nativne" ikonice konzistentno
> Nemojte sve utrpati u jedan ekran
> Ukoliko korisnik mora priekati da se neto odradi - obavijestite ga
(ProgressBar, ProgressDialog)

Page 20

25/05/15

TSD

Vip 2010

Brzina je vrlina
> Korisnici oekuju da se reakcija na njihovu akciju odigra
TRENUTNO
> Android OS vas PRISILJAVA da vaa aplikacija bude responzivna
> Imate tono 5 sekundi (10 za broadcast receiver)

Page 21

25/05/15

TSD

Vip 2010

Rjeenje: AsyncTask
> Nemojte izvravati kod kojemu treba dulje od 5 sekundi u glavnoj
programskoj niti (UI thread)
> Vrlo jednostavno koritenjem AsyncTask klase
> onPreExecute (UI thread)
> doInBackground (worker thread)
> onProgressUpdate (UI thread)
> onPostExecute (UI thread)
> U stvari...nemojte nita izvoditi u glavnoj programskoj niti

Page 22

25/05/15

TSD

Vip 2010

AsyncTask primjer

Page 23

25/05/15

TSD

Vip 2010

Dont fight the system

> Nemojte koristiti nedokumentirane APIje


> Sustav u bilo kojem trenutku moe suspendirati ili prekinuti
izvoenje vae aplikacije ili servisa budite spremni na to!
> Nemojte pokretati activitye iz servisa i broadcast receivera (primjer
s alarmom i pozivom)
> Potujte postavke koje je postavio korisnik

Page 24

25/05/15

TSD

Vip 2010

Tko tedi taj vrijedi, tko ne tedi ne vrijedi


> Kapacitet baterije je najslabija karika kod svih pametnih mobilnih
ureaja
> Nemojte pretjerivati s uestalou dohvata i osvjeavanja podataka
ukljuujui i dohvat podataka sa senzora (akcelerometar, GPS...)
> Nemojte bez potrebe koristiti WakeLock, a ako ga koristite,
pripazite da uvijek otpustite WakeLock

Page 25

25/05/15

TSD

Vip 2010

WakeLock zloupotreba
> WakeLock je mehanizam koji forsira telefon da ostane budan
(zlobnici bi rekli mehanizam za brzo i efikasno pranjenje baterije)
> Neophodan je u sluajevima kada ne elite da ureaj ode u stand
by ako nema korisnikog inputa (npr. Video player ili igra...)
> Tips:
> Razmislite da li vam uope treba
> Koristite minimalni nivo WakeLocka
> Oslobodite WakeLock im prije mogue
> Postavite WakeLock timeout

Page 26

25/05/15

TSD

Vip 2010

(Ovaj ne vrijedi)

Page 27

25/05/15

TSD

Vip 2010

Openite optimizacije koda


> Uvijek postoji tradeoff izmeu by the book dizajna i
brzine
> Koristite primitivne tipove umjesto objekata
> Izbjegavajte koritenje enumeracija
> Izbjegavajte float tip ako ba nije nuan
> Koristite sistemske biblioteke
> Koristite static (final) za konstante
> Koristite enhanced loop sintaksu
> Nemojte koristiti interne getere i setere, unutar klase uvijek
pristupajte fieldovima direktno

Page 28

25/05/15

TSD

Vip 2010

Openite optimizacije koda

>
>
>
>
>
>
>
>

Uvijek postoji tradeoff izmeu by the book dizajna i brzine


Keep it simple - koristite primitivne tipove umjesto objekata
Izbjegavajte koritenje enumeracija
Izbjegavajte float tip ako ba nije nuan
Koristite sistemske biblioteke
Koristite static (final) za konstante
Koristite enhanced loop sintaksu
Nemojte koristiti interne getere i setere, unutar klase uvijek
pristupajte fieldovima direktno

Page 29

25/05/15

TSD

Vip 2010

Keep it simple

> Koristite primitivne tipove umjesto objekata


> Izbjegavajte float tip ako ba nije nuan

Page 30

25/05/15

TSD

Vip 2010

Openite optimizacije koda

>
>
>
>
>
>
>
>

Uvijek postoji tradeoff izmeu by the book dizajna i brzine


Keep it simple - koristite primitivne tipove umjesto objekata
Izbjegavajte koritenje enumeracija
Izbjegavajte float tip ako ba nije nuan
Koristite sistemske biblioteke
Koristite static (final) za konstante
Koristite enhanced loop sintaksu
Nemojte koristiti interne getere i setere, unutar klase uvijek
pristupajte fieldovima direktno

Page 31

25/05/15

TSD

Vip 2010

Izbjegavajte enumove

> Openito pravilo ako enum nema konstruktor i ne definira svoje


vlastite metode koristite int konstante

Page 32

25/05/15

TSD

Vip 2010

Openite optimizacije koda

>
>
>
>
>
>
>
>

Uvijek postoji tradeoff izmeu by the book dizajna i brzine


Keep it simple - koristite primitivne tipove umjesto objekata
Izbjegavajte koritenje enumeracija
Izbjegavajte float tip ako ba nije nuan
Koristite sistemske biblioteke
Koristite static (final) za konstante
Koristite enhanced loop sintaksu
Nemojte koristiti interne getere i setere, unutar klase uvijek
pristupajte fieldovima direktno

Page 33

25/05/15

TSD

Vip 2010

Koristite sistemske biblioteke


> Teko da ete neke standardne stvari napisati bolje ;)
> Primjer: String.indexOf je RUNO napisan u asembleru, poziv ove
metode JIT compiler e izvriti kao inline asemblerski kod
> Nemojte konkatenirati stringove tipa s1 += s2 + s3 + ... pogotovo
ne u petljama
> Koristite StringBuilder, String.Concat, String.Format

Page 34

25/05/15

TSD

Vip 2010

Openite optimizacije koda

>
>
>
>
>
>
>
>

Uvijek postoji tradeoff izmeu by the book dizajna i brzine


Keep it simple - koristite primitivne tipove umjesto objekata
Izbjegavajte koritenje enumeracija
Izbjegavajte float tip ako ba nije nuan
Koristite sistemske biblioteke
Koristite static (final) za konstante
Koristite enhanced loop sintaksu
Nemojte koristiti interne getere i setere, unutar klase uvijek
pristupajte fieldovima direktno

Page 35

25/05/15

TSD

Vip 2010

Koristite static final za konstante

> Ovo vrijedi samo za primitivne tipove (int, byte, char, float, short,
long, boolean)
> Donekle vrijedi i za String tip (string constant umjesto field
lookup)

Page 36

25/05/15

TSD

Vip 2010

Openite optimizacije koda

>
>
>
>
>
>
>
>

Uvijek postoji tradeoff izmeu by the book dizajna i brzine


Keep it simple - koristite primitivne tipove umjesto objekata
Izbjegavajte koritenje enumeracija
Izbjegavajte float tip ako ba nije nuan
Koristite sistemske biblioteke
Koristite static (final) za konstante
Koristite enhanced loop sintaksu
Nemojte koristiti interne getere i setere, unutar klase uvijek
pristupajte fieldovima direktno

Page 37

25/05/15

TSD

Vip 2010

Enhanced loop

Page 38

25/05/15

TSD

Vip 2010

Openite optimizacije koda

>
>
>
>
>
>
>
>

Uvijek postoji tradeoff izmeu by the book dizajna i brzine


Keep it simple - koristite primitivne tipove umjesto objekata
Izbjegavajte koritenje enumeracija
Izbjegavajte float tip ako ba nije nuan
Koristite sistemske biblioteke
Koristite static (final) za konstante
Koristite enhanced loop sintaksu
Nemojte koristiti getere i setere, unutar klase uvijek
pristupajte fieldovima direktno

Page 39

25/05/15

TSD

Vip 2010

Get/Set vs lokalna varijabla

> Drugi isjeak je 3 do 7 (JIT) puta bri

Page 40

25/05/15

TSD

Vip 2010

Zagrebali smo povrinu, a to dalje?


http://developer.android.com
http://google.com

Page 41

25/05/15

TSD

Vip 2010

Pitanja?

Page 42

25/05/15

TSD

Vip 2010

Hvala na panji

Page 43

25/05/15

TSD

Vip 2010

You might also like