Ú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
- Milyen légkondit a lakásba?
- Házimozi belépő szinten
- Villanyszerelés
- Jogász topik
- Titan 2 Elite néven érkezik egy újabb BlackBerry-szerű Unihertz
- IDC: 2025-ben a Huawei megnyerte Kínát, az Apple a világot
- Jelentősen szűkül a GeForce RTX 50 sorozat modellkínálata?
- Napelem
- VR topik
- BestBuy topik
- További aktív témák...
- Razer Basilisk V3 Bolti ár:20k INGYEN FOXPOST
- LG UltraGear 39GS95QE-B OLED Monitor! 39" 3440x1440 / 240Hz / 0.03ms / G-Sync / FreeSync! BeszámítOK
- LG UltraGear 45GS95QX-B OLED Monitor! 45" 3440x1440 / 240Hz / 0.03ms / G-Sync / FreeSync! BeszámítOK
- Szinte Új RAZER BLACKWIDOW V3 MINI HYPERSPEED (YELLOW SWITCH) Bolti ár:50k INGYEN FOXPOST
- X13 Gen5 13.3" FHD+ IPS Ultra 5 135U 16GB 512GB NVMe magyar vbill ujjolv IR kam gar
- Új könyv: A szamuráj erényei Kicune - Itó könyve
- HP 14 Elitebook 640 G10 FHD IPS i5-1345U vPro 10mag 16GB 512GB SSD Intel Iris XE Win11 Pro Garancia
- magyar billentyűzet - 165 - Lenovo Legion Pro 7 (16IRX9H) - Intel Core i9-14900HX, RTX 4080
- Bomba ár! HP ProBook 430 G4 - i5-G7 I 8GB I 128GB SSD I HDMI I 13,3" I Cam I W11 I Gari!
- Dell Precision 7550 i7-10850H 32GB 512GB Nvidia RTX3000 6GB 1 év garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest

