Hirdetés
- Gyorsjavítást kapott a visszavont, majd újra kiadott GeForce driver
- Ilyen olcsó sem volt még egy Apple notebook
- Túl nagy alkatrészt vettél? Így kerülheted el a PC-építés legnagyobb hibáját
- MWC 2026: leégsz, ha nem figyelsz a TCL 15 ezer nites panelje előtt
- Második villámcsapás: teszteltük a ROG Raikiri II Xbox kontrollert
Új hozzászólás Aktív témák
-
Karma
félisten
válasz
negyedes
#906
üzenetére
Lassíts egy kicsit. Egy iPhone-nyi képernyőn nem akartam regényt írni, ezért utalgattam csak a követendő irányra, de akkor most konkrétabban.
Kezdjük ott, hogy gondold át, hogy az alkalmazásod mit csinál, milyen képernyői vannak (jó közelítéssel ezek az Activityjeid); és ezekből melyik fér hozzá a DB-hez, mit csinál vele és mennyi ideig. Ha ezt a topikba leírod, bár nem kötelező, még hasznos is lehet. Ez azért kell, mert ez alapján tudod eldönteni, hogy ki legyen az adatbázis gazdája. Mint pár héttel ezelőtt említettem, ez különösen fontos - ezért is vár Contextet első paraméterként.
Ideális esetben, mondhatni alapelvként, a DB-hez csak nagyon ritkán fordulj, és sose fuss több kört mint szükséges, mert egyszerűen lassú.
Két primitív stratégiát felvázolok addig is, amíg gondolkodsz rajta.
1) (a kettőből ajánlott) Amelyik Activity adatbázist használ, az kezeli magának. Az onCreate metódusban hozod létre a DatabaseHandlert, contextként pedig this formájában az Activity-t adod meg. OnDestroyban meg bezárod. A kód többi részében pedig feltételezed, hogy a DB objektum nyitva van, és használod békésen.
2) Az alkalmazásod ugyebár több Activityből áll össze, de az Application objektum közös. Az Application osztály is Context, bár korlátozottabb jogokkal rendelkezik (nem nyúlhat a UI-hoz vagy az aktív Activity-hez például). Az adatbázishoz viszont pont elég.
Ezáltal meg tudod oldani azt, hogy induláskor egyszer kinyitod a DB-t (Application onCreate metódusban, a context ismét this), és majd a végén bezárod. Közben meg az Application egy tagváltozójában tárolod a handlert.
Van sok gány megoldás arra, hogy hogyan teszed elérhetővé az Activity-k felé: castolhatod az getApplicationContext() eredményét, csinálhatsz static mezőket, követheted a singleton mintát... Vagy használhatsz IoC jellegű logikát is.A lényeg az, hogy legyen meg a teljes életciklus fejben.
Új hozzászólás Aktív témák
- Gamer PC i7-8700K RTX4060 garanciával
- Lenovo Legion Slim 5 - 4060 GPU - 2 év garancia - számla
- Samsung Galaxy S24 Ultra 12/512GB Újszerű,Kártyafüggetlen,Tartozékaival. 1 Év Garanciával!
- Garanciális Deepcool PN850-M Black 850W 80 PLUS Gold
- Lenovo ThinkPad X1 Carbon Gen 10 i5-1245U / 16GB RAM / 512GB NVMe SSD / 1920 1200 / EU billentyűzet
- szinteÚJ Dell 15 i7 1355U 16GB 512GB FHD 120Hz!!!!
- GYÖNYÖRŰ iPhone 13 128GB Red-1 ÉV GARANCIA - Kártyafüggetlen, MS4373, 100% Akkumulátor
- Honor Magic6 Pro 512GB, Kártyafüggetlen, 1 Év Garanciával
- Új Acer Nitro V15 FHD IPS 144Hz i9-13900H 14mag 16GB 512GB SSD Nvidia RTX 4060 8GB Win11 Garancia
- BESZÁMÍTÁS! 64GB Patriot Viper 3600Mhz DDR4 memória garanciával hibátlan működéssel
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

