Autore Topic: Exit, Gestione Risorse ecc...  (Letto 1012 volte)

Offline ScarfaceIII

  • Utente junior
  • **
  • Post: 112
  • Respect: +13
    • raferalston12
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
  • Sistema operativo:
    GNU/Linux, Ubuntu 10.04 / Windows 7
Exit, Gestione Risorse ecc...
« il: 07 Aprile 2010, 16:31:11 CEST »
0
A dire il vero non sapevo che titolo dare al post precisamente, ma il problema è questo:
ho scoperto che quando si esce da un'applicazione clickando il tasto "freccina indietro" del telefono...in realtà non si esce totalmente...cioè, tenendo premuto il tasto Home, se non erro, si possono visualizzare le applicazioni rimaste "ibernate" e clickandoci sopra si riprende l'esecuzione. Qualcuno di voi ha della conoscenza da condividere a riguardo? come evitarlo e fare un "exit" vero e proprio, ripulendo le risorse di tutto il lerciume che ho fatto durante l'esecuzione?  :-X

grazie mille dell'attenzione, attendo lumi :-o

p.s.: domanda secca: è possibile fare in modo che un programma rimanga in vera e propria esecuzione in background, ad esempio durante una chiamata, e riprenda poi quando si appende? se si come, usando la classe "Service"?

grazie di nuovo

EDIT: ho appurato che non si può fare e mi metto il cuore in pace. grazie a chiunque si sia interessato
« Ultima modifica: 15 Maggio 2010, 17:37:11 CEST da JD »

Offline Agafi

  • Utente normale
  • ***
  • Post: 173
  • Respect: +10
    • svetlana-tomasevschi-perini
    • agafist
    • Mostra profilo
  • Dispositivo Android:
    SE Xperia Neo,LG Optimus One,Asus EEE Pad Transformer,HTC Magic Vodafone
  • Play Store ID:
    Agafi
  • Sistema operativo:
    Win7
Re:Exit, Gestione Risorse ecc...
« Risposta #1 il: 08 Aprile 2010, 15:59:58 CEST »
0
in teoria se utilizzi il metodo finish() dalla tua activity dirai al garbageCollector di poter ripulire la tua area di memoria ;-)

Offline .zero

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    N/A
  • Sistema operativo:
    Archlinux, Windows 7
Re:Exit, Gestione Risorse ecc...
« Risposta #2 il: 10 Aprile 2010, 00:33:41 CEST »
0
in teoria se utilizzi il metodo finish() dalla tua activity dirai al garbageCollector di poter ripulire la tua area di memoria ;-)

Il punto è che, visto che il GC è asincrono, non è detto che la tua applicazione venga eliminata. Anzi, è quasi scontato che non succeda. finish() semplicemente "spinge" l'applicazione in background, e ne chiama se non sbaglio i metodi OnStop() e OnDestroy() in cui va effettuata ogni operazione di pulizia (chiusura di thread, sockets...) che non è stata eseguita altrove.
Quando Android avrà bisogno di risorse l'applicazione verrà effettivamente distrutta. Fino ad allora, basterà tenere schiacciato il tasto home per rimetterla in esecuzione  :-P


Per quanto riguarda la seconda domanda sì, si può creare un programma che viene eseguito in background estendendo la classe Service. Non è molto "diretto" e semplice il farlo, però.
"Programmare" is not equal to "scrivere codice" || The sky is the limit... on an ideal, not-existent calculator.

Offline ScarfaceIII

  • Utente junior
  • **
  • Post: 112
  • Respect: +13
    • raferalston12
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
  • Sistema operativo:
    GNU/Linux, Ubuntu 10.04 / Windows 7
Re:Exit, Gestione Risorse ecc...
« Risposta #3 il: 10 Aprile 2010, 11:23:17 CEST »
0
mmhhh quindi, mi dici: non c'è soluzione alla "non uscita"? è così e basta. In ogni caso, l'applicazione è nello stato "inactive", cioè ha chiamato i metodi onStop e/o onDestroy, quindi non è una grossa preoccupazione, diciamo?

Per quanto riguarda i Service, devo mandar giù il boccone amaro perchè l'applicazione che sto sviluppando deve rimanere "running" in alcune sue parti critiche, anche in caso di ricezione di una chiamata...al massimo chiederò aiuto! XD

grazie

Offline Dado

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Motorola Milestone
  • Play Store ID:
    Edges Labs
Re:Exit, Gestione Risorse ecc...
« Risposta #4 il: 18 Aprile 2010, 18:10:43 CEST »
0
Premetto che non ho mai provato a forzare la chiusura di un programma android, e avevo letto (non ricordo dove) che è una pratica sconsigliata, comunque poichè si tratta pur sempre di un programma java la System.exit(0) dovrebbe "forzare" la chiusura del processo.

Offline Agafi

  • Utente normale
  • ***
  • Post: 173
  • Respect: +10
    • svetlana-tomasevschi-perini
    • agafist
    • Mostra profilo
  • Dispositivo Android:
    SE Xperia Neo,LG Optimus One,Asus EEE Pad Transformer,HTC Magic Vodafone
  • Play Store ID:
    Agafi
  • Sistema operativo:
    Win7
Re:Exit, Gestione Risorse ecc...
« Risposta #5 il: 20 Aprile 2010, 09:44:05 CEST »
0
Solo per tornare sull'argomento ;-)

The final call you receive before your activity is destroyed. This can happen either because the activity is finishing (someone called finish() on it, or because the system is temporarily destroying this instance of the activity to save space. You can distinguish between these two scenarios with the isFinishing() method.

Questo ti permette di fare la pulizia migliore al tuo "lerciume" ;-)