Autore Topic: Dove chiudere la database?  (Letto 809 volte)

Offline balorel

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    ubuntu
Dove chiudere la database?
« il: 28 Novembre 2010, 22:07:58 CET »
0
Ciao a tutti!
Questo solo per chiedere un consiglio: praticamente ho una applicazione che usa una database. L'applicazione è costituita da più Activity e almeno due di esse usano quella database; ognuna creando una istanza dell'Adapter per quella database. Mi sono reso conto che in ognuna di quelle Activity faccio un open() ma non chiudo (facendo un close() ) mai la database.
Basterebbe forse sovrascrivere il metodo finish() in ognuna delle Activity che usa quella database in modo da chiuderla lì dentro?
O magari fare la stessa cosa anche per onPause() ?
O Fare questo solo nell'Activity principale dell'applicazione ?

L'ultima soluzione mi sembra non molto ragionevole in quanto creo una istanza della db in ognuna delle Activity che la usano.

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Dove chiudere la database?
« Risposta #1 il: 29 Novembre 2010, 09:05:13 CET »
0
La soluzione migliore per evitare di lasciare il db aperto, sarebbe quella di aprirlo e chiuderlo subito dopo ogni utilizzo.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Dove chiudere la database?
« Risposta #2 il: 29 Novembre 2010, 09:28:50 CET »
0
La soluzione migliore per evitare di lasciare il db aperto, sarebbe quella di aprirlo e chiuderlo subito dopo ogni utilizzo.
si, per evitare di dimenticarlo chiuso si, c'è un però: l'apertura di un db non è cosa da nulla, cioè se te fai millemila query piccole e semplici non ha senso chiudere e riaprire il db continuamente, poichè perderesti tempo inutile. Tutto dipende da come e cosa fai nel codice. Se ad esempio aggiorni una listview ogni secondo tramite cursor,allora non chiudi e riapri il db ogni secondo, ma se carichi dei dati e li riutilizzi ogni 5-10 minuti,allora potrebbe essere meglio aprire e chiudere...
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline balorel

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    ubuntu
Re:Dove chiudere la database?
« Risposta #3 il: 29 Novembre 2010, 13:06:20 CET »
0
Se ho capito bene, non c'è gran male a chiudere la database solo alla chiusura dell'Activity vero? Cioè nel metodo finish() visto la apro nel metodo onCreate().

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Dove chiudere la database?
« Risposta #4 il: 29 Novembre 2010, 14:47:33 CET »
0
Sono in accordo con quanto detto da Nicola_D, in linea generale, ma comunque io proponevo il caso per avere la sicurezza di chiudere il db.
In riferimento a quanto detto da Nicola_D, dovresti aprire e chiudere il db relativamente a questo genere di operazioni, e non farlo in maniera generale.
Ad ogni modo, mi chiedo cosa succede se l'applicazione genera un errore e si killa....visto che non si fa cenno nel ciclo di vita di un'activity cosa succede in questi casi (non mi pare di avere visto qualcosa in merito, almeno).
Inoltre, tieni presente che un'app può essere messa in pausa, per cui sarebbero da gestire anche gli eventi onresume, onpause, etc....
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Dove chiudere la database?
« Risposta #5 il: 29 Novembre 2010, 15:20:19 CET »
0
Sono in accordo con quanto detto da Nicola_D, in linea generale, ma comunque io proponevo il caso per avere la sicurezza di chiudere il db.
In riferimento a quanto detto da Nicola_D, dovresti aprire e chiudere il db relativamente a questo genere di operazioni, e non farlo in maniera generale.
Ad ogni modo, mi chiedo cosa succede se l'applicazione genera un errore e si killa....visto che non si fa cenno nel ciclo di vita di un'activity cosa succede in questi casi (non mi pare di avere visto qualcosa in merito, almeno).
Inoltre, tieni presente che un'app può essere messa in pausa, per cui sarebbero da gestire anche gli eventi onresume, onpause, etc....
se non ho capito male, se l'app si killa la connessione al db si chiude automaticamente (tipo timeout), diverso invece se va in pausa o onresume, ho visto che a volte il db si autochiude, quindi io quando faccio l'onResume riapro sempre il database, o meglio, ho fatto un metodo open() che verifica se la connessione c'è già,altrimenti apre il db, cosi sei sicuro di poter chiamare open anche mille volte, non proverà mai a fare piu di una connessione!
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Dove chiudere la database?
« Risposta #6 il: 29 Novembre 2010, 15:44:36 CET »
0
Per l'apertura credo che sia un ottimo sistema, solo rimane il problema della chiusura.
A questo punto proporrei un approccio del tipo: ad ogni azione di terminazione dell'activity (pause, destroy e compagnia bella), inserire la chiusura del db.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline balorel

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    ubuntu
Re:Dove chiudere la database?
« Risposta #7 il: 29 Novembre 2010, 16:42:41 CET »
0
Per l'apertura credo che sia un ottimo sistema, solo rimane il problema della chiusura.
A questo punto proporrei un approccio del tipo: ad ogni azione di terminazione dell'activity (pause, destroy e compagnia bella), inserire la chiusura del db.
Ottimo!
Facendo una analisi di quanto capito mi sono pure io adottato questa strategia!

Offline dessorry

  • Utente normale
  • ***
  • Post: 230
  • Who lived hoping died craping
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire HD
  • Play Store ID:
    dessorry
  • Sistema operativo:
    Windows, Ubuntu, Kubuntu
Re:Dove chiudere la database?
« Risposta #8 il: 30 Novembre 2010, 13:00:13 CET »
0
LA database non si può sentire

correggi per favore il titola DELLA topic