Hirdetés

Új hozzászólás Aktív témák

  • thon73
    tag

    "Ez azt jelenti, hogy az onCreate-ben megnyitott adatbázist az onDestroyban kellene bezárni. Ha előbb zárjuk be (pl. onPause), akkor visszatéréskor (onResume-tól kezdődik), nem lesz nyitott adatbázisunk (mivel a megnyitást végző onCreate nem kerül meghívásra!)"

    Miért ne lenne? Csak akkor nem lesz, ha az onPauseban lezárod a kapcsolatot.

    Legalábbis ez lenne a logikus. Persze nem tudom mennyire jó ötlet nyitvatartani a háttérben, nem csináltam még ilyet csak PC-n, ott meg ugye egész más a helyzet. :)

    Pontosan. Ha onPause-ban bezárom, akkor nem lesz.
    DE:
    onPause után a rendszer bármikor bezárhatja a programot, és akkor az onStop ill. onDestroy nem kerül meghívásra. Ha a zárás az onDestroy-ban van, akkor soha nem kerül meghívásra és bezárásra.

    Ez a helyzet sokkal gyakoribb, mint gondolnánk. Most próbáltam tesztelni: ha home-mal lépek ki a programból, és utána egy csomó minden mást elindítok (ez azért gyakori), akkor az eredeti program figyelmeztetés nélkül bezár ((egyébként a gyakorlatban ez az onStop után következik be, elméletileg már az onPause után is bekövetkezhetne))

    Azt nem tudom, zavarja-e az adatbázist és a cursor-t, ha nyitva marad. Szerintem nem, mert adapterről van szó, tehát csak olvasásról.
    Zavarja-e a rendszert, ha nyitva marad az adatbázis? Mem-leak?
    Vagy ne foglalkozzak az egésszel, mint ahogy a legtöbb példaprogram teszi.

    Egy ideje olvasgatok erről, de sehol nem találtam korrekt módszert a zárásra. Kivéve az onPause-onResume párosát, de annak meg más baja van. (vagyis túl gyakran kerül meghívásra.) Szerintem az egyik legnagyobb hiba az Android tervezésében, hogy az onPause után megengedett a rendszernek az erőltetett kilépés. Mi a nyavajáért nem fejezheti be ilyenkor a dolgát a program!?
    ((A listView esetén sajnos teljes activity-ben kell gondolkodni: amíg a listview látszik, addig az adapter aktív, tehát kell a nyitott cursor és adatbázis is.))

Új hozzászólás Aktív témák