Ugrás a fő tartalomra

Android fejlesztés 2 : Jellemzők

Android rendszer jellemzői








A linux kernel feletti rétegben található alkalmazásfuttató környezet, amiben szerepel a központi könyvtár és a Dalvik virtuális gép. 

A Dalvik azért különleges, mert ellentétben a Java virtuális gépekkel, a forráskódot nem .jar, hanem .dex kiterjesztésű futtatható fájlokká alakítja.

Dalvik szerkezetileg regiszter (register-based), nem pedig verem alapú (stack-based), ami azt jelenti, hogy a hardverszintű processzor, és memóriaműveletek eltérnek. 

A Dalvik processzort többet dolgoztató regiszter alapú sokkal gyorsabb, a memóriát többet használó verem-alapú karbantartása egyszerűbb. 

Minden egyes alkalmazáshoz külön-külön Dalvik példány van, míg egy JVM tud futtatni több java programot is.


Kompones szinten egy új program indítása előtt a rendszer megnézi, fut-e már a komponenst tartalmazó alkalmazás egy processze. Ha igen, alapesetben ehhez a processzhez rendeli a létrehozandó komponenst.

Ha nem, akkor elindítja az alkalmazást, majd példányosítja a komponenshez szükséges osztályokat. 


Alkalmazásokat fejleszteni legegyszerűbben az alsóbb szintek által nyújtott keretrendszerrel lehetséges Java / Kotlin és xml nyelven.




Fogalmak

Activity, azaz cselekvés 

Ez olyan komponens, ami közvetlen kapcsolatban van a felhasználóval, de a háttérben is futhat. Felelős az alkalmazás megjelenítéséért, és életciklusának menedzseléséért. Minden egyes alkalmazásnak legalább egy activity-je van. A képernyőn mindig csak egy activity felülete jeleníthető meg, addig a többi szünetelt üzemmódban van, de nem szűnik meg.


Activity életciklusa







Az Activity alapvetően négy állapot valamelyikében lehet. 

1. Running


Ha az Activity az előtérben fut (a stack memoria tetején helyezkedik el), ez az aktív, vagy futó állapot (running). Ilyenkor az Activity fókuszban van (látható is).


2. Paused

Ha az Activity elvesztette a fókuszt, de még látható, akár részben is (mert például egy új, nem teljes képernyőt lefoglaló Activity jelent meg fölötte), akkor az Activity szünetel, az állapota paused. 
Egy ilyen szüneteltetett tevékenység teljes mértékben élő maradhat, abban az értelemben, hogy az összes állapot- és taginformációját megőrizheti és csatlakoztatva marad az ablakkezelőhöz. 
Ám ha az operációs rendszer extrém alacsony memóriaállapotot érzékel (ennek értéke beállításfüggő), akkor törölheti az Activityt.

3. Stopped


Ha az Activityt egy másik tevékenység teljes egészében letakarja, akkor leállítódik (Stopped). Minden állapot- és taginformációja megőrződik ugyan, de nem lesz látható a felhasználó számára az ablaka és gyakran törlésre kerülhet az operációs rendszer által, ha az általa lefoglalt memóriaterületre
más aktivity-nek szüksége lehet.


4. Finished, vagy killed


Szünetelő, vagy leállított állapotú Activity esetén tehát az operációs rendszer bármikor kérheti az Activity befejezését
(finished), vagy egyszerűen kitörölheti azt (killed). Az Activity újbóli megnyitásához ilyenkor újra teljes egészében létre kell hozni azt. 

A rendszer az Activity-ket egy ún. Back Stack-en tárolja, itt az előtérben levő Activity van a Back Stack tetején.

Az új Activity hogyan viselkedjen a többihez képest(tag attribútumai):

  • > taskAffinity: melyik taskhoz tartozik
  • > launchMode: indítási mód (mindig új példány, stb.)
  • > allowTaskReparenting: új taskhoz kerül át
  • > clearTaskOnLaunch: minden Activity-t töröl a task-ból
  • > alwaysRetainTaskState: a rendszer kezelje-e a task állapotát
  • > finishOnTaskLaunch: le kell-e állítani az Activity-t ha a felhasználó kilép a task-ból (pl. HOME gomb)

A startActivity(…) függvény paraméter értékei (az új Activity hogyan viselkedjen a most futóhoz képest):

  • > FLAG_ACTIVITY_NEW_TASK
  • > FLAG_ACTIVITY_CLEAR_TOP
  • > FLAG_ACTIVITY_SINGLE_TOP






Android forrás filek


Manifest.xml

Az alkalmazás fő xml fájlja. Itt kell regisztrálni az activityket, engedélyeket adni, valamint metaadatokat megadni, amik adatok az adatokról. Megadja a fő java csomagot, ami az alkalmazás egyik azonosítója az Android operációs rendszerben.



activity_main.xml

Itt komponenseket xml tag-ekként adhatjuk meg a felszínen, míg annak adatait attribútumokként. A tageken belüli szöveg nem engedélyezett. A színeket és formákat megadhatjuk más xml fájlokban is, és ezekre hivatkozhatunk a felületet megadó layout.xml fájljainkban.

app/src/main/res/layout/activity_main.xml





MainActivity.java (Java nyelvel foglalkozok előszór, de lehetne Kotlin is)





Ez az alkalmazásunk működési szabályainak, tevékenységeinek gyűjteménye.

app/src/main/java/MainActivity.java







Android forrás filek könyvtár elhelyezkedése





Javaslatok a megjelenítés beállításánál:

A rugalmas megjelenítés kialakítására lehetőleg kerüljük a px / pixel mértékegység használatát, használjunk helyette inkább DP-t használjuk.

Használjuk a wrap_content, match_parent meghatározásokat.

Lehetőleg készítsünk különböző kép erőforrásokat az eltérő képernyősűrűségekhez

Szövegek méretezéséhez érdemes használni az sp (scale-independent pixel) mértéket, dp-hez hasonlóan
működik




Megjelenítési felület generálás:


LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(
LAYOUT_INFLATER_SERVICE);
View myView = layoutInflater.inflate(R.layout.activity_main, null);
layoutLin.addView(myView)

   


Fogalmak:


Felbontás (resolution – px): Képernyő pixelek száma
> A UI tervezésekor nem felbontással dolgozunk, hanem mérettel és pixel sűrűséggel

Sűrűség független pixel (density-independent pixel – dp)
> Virtuális pixel egység, amit UI tervezéskor célszerű használni
> Egy dp egy fizikai pixelnek felel meg egy 160 dpi-s képernyőn (160 az egységes középérték)
> A rendszer futási időben kezel minden szükséges skálázást a definiált dpnek megfelelően
> px = dp * (dpi / 160)
> Például egy 240 dpi-s képernyőn, 1 dp 1.5 fizikai pixelnek felel meg

 Sürűség független méretezés szövegekhez - sp



Jellemzők:

Képernyő méret (screen size):
> Fizikai képátló
> Android 4 kategóriát különböztet meg: small, normal, large, és extra large

 Képernyő sűrűség (screen density – dpi): A pixelek száma egy adott fizikai területen belül, tipikusan inchenkénti képpont (dpi – dots per inch)
> Az Android 6 kategóriát különböztet meg: low, medium, high és extra high


 Orientáció (orientation): A képernyő orientációja a felhasználó nézőpontjából:
> Álló (portrait)
> Fekvő (landscape)
> Az orientáció futási időben is változhat, például a készülék eldöntésével
> Lehetőség van rögzíteni az orientációt




Link:







https://www.wikitechy.com/tutorials/android/install-android

Megjegyzések