Hirdetés
- MWC 2026: csápolt a robot, majd dobott egy hátraszaltót
- Xiaomi 17 Ultra - jó az optikája
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- MWC 2026: Kagylót találtam a katalán tengerparton
- Sokkal jobb ajánlat lett elődjénél az iPhone 17e
- Bemutatkozott a Poco X7 és X7 Pro
- MWC 2026: Kezünkben a minden tekintetben európai okostelefon
- Nothing Phone 2a - semmi nem drága
- MWC 2026: Bajnoki címre pályázik a Xiaomi Watch 5
- Garmin Forerunner 255 Music - nem csak futóknak
Ú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
- ASUS GeForce RTX 4080 16GB GDDR6X Noctua OC Edition
- Dell Latitude 7280,12.5",FHD,i7-6600U,8GB DDR4, 128GB SSD,WIN11, 2 KAMERA
- HP ProLiant DL360e G8 8xSFF 1U 2xE5-2450L (16 mag/32 szál), 144GB DDR3, iLO4, B120i, P410 1GB BBU
- Iphone 11 64Gb-Felújított-patika-100% akku
- MSI MAG 275QF Rapid IPS/2K/180hz/0.5ms
- HIBÁTLAN iPhone 12 64GB White-1 ÉV GARANCIA -Kártyafüggetlen, MS4604, 100% AKKSI
- Xiaomi Redmi 15 / 6/128GB / Kártyafüggetlen / 12Hó Garancia
- GYÖNYÖRŰ iPhone 14 Pro 128GB Deep Purple -1 ÉV GARANCIA - Kártyafüggetlen, MS4649
- iKing.Hu - Apple iPhone 15 Pro Max Black Titanium 100% Akku
- LENOVO ThinkPad T14s Gen 2i touchscreen - i7-1185G7, 16GB RAM, SSD, jó akku, számla, 6 hó gar
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

