Autore Topic: Far "morire" l'intera applicazione  (Letto 859 volte)

Offline Qwertid

  • Utente junior
  • **
  • Post: 50
  • Respect: 0
    • Mostra profilo
Far "morire" l'intera applicazione
« il: 16 Settembre 2011, 23:46:10 CEST »
0
Ciao a tutti  :-)

Ho scritto un'applicazione che si compone di varie activity le quali si chiamano in sequenza A->B->C->D mediante un listener sul click.

Ogni listener nell'azione onClick immediatamente dopo l'aver startato l'activity successiva, ha la chiamata finish() così da distruggere per sempre l'activity corrente.

Il mio problema è questo: poniamo il caso che io sia nell'activity C e premo il tasto back. L'applicazione esce e infatti mi mostra il "desktop" MA.... in realtà sta ancora girando (lo vedo dal fatto che nell'emulatore è presente il processo con nome uguale alla mia applicazione).

Come posso fare per farlo morire definitivamente? E' corretta la mia impostazione per killare le varie activity di volta in volta?

Grazie  ;-)


Offline Gigiuz

  • Utente normale
  • ***
  • Post: 187
  • Respect: +23
    • Google+
    • gigiuzzo81
    • Gigiuz81
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Note III
  • Play Store ID:
    GGXSoft
  • Sistema operativo:
    Windows 7 64bit, OS X (virtualized), Ubuntu
Re:Far "morire" l'intera applicazione
« Risposta #1 il: 17 Settembre 2011, 01:17:13 CEST »
0
E' normale che ti rimanga l'applicazione nello stack: quando premi il pulsante Back il comportamento di default è quello di mettere l'activity corrente nello stato onPause(); da questo stato è poi il sistema che decide, in base alle proprie necessità, di eliminare definitivamente o meno l'app dalla memoria.

Se proprio ci tieni a chiudere completamente l'app dovresti intercettare l'evento della pressione del tasto back e richiamare Activity.finish() da lì.
Hai bisogno di implementare un sistema di "codici seriali di sblocco" nella tua applicazione? Dai un'occhiata alla mia libreria: RemoteUnlocker

Offline Qwertid

  • Utente junior
  • **
  • Post: 50
  • Respect: 0
    • Mostra profilo
Re:Far "morire" l'intera applicazione
« Risposta #2 il: 17 Settembre 2011, 01:47:16 CEST »
0
Ho provato con

Codice (Java): [Seleziona]
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
                if (keyCode == KeyEvent.KEYCODE_BACK) {
                finish();
            }
            return super.onKeyDown(keyCode, event);
        }

Ma purtroppo il problema permane...

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Far "morire" l'intera applicazione
« Risposta #3 il: 17 Settembre 2011, 07:48:57 CEST »
0
Ma purtroppo il problema permane...

Esclusivamente per mia curiosità: questo comportamento ti crea un problema effettivo di comportamento dell'applicazione oppure è più che altro una cosa cosmetica?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Qwertid

  • Utente junior
  • **
  • Post: 50
  • Respect: 0
    • Mostra profilo
Re:Far "morire" l'intera applicazione
« Risposta #4 il: 17 Settembre 2011, 10:34:47 CEST »
0
Mi servirebbe che l'applicazione cessasse del tutto perchè ho necessità di chiamare un metodo in fase di uscita che mi azzeri delle strutture dati. Perchè se il processo resta in memoria finchè Android non decide di sbarazzarsene, nel frattempo potrei avviare una nuova istanza (dal punto di vista del giocatore) dell'applicazione e mi trovo in una situazione inconsistente...

Come posso fare a garantire che questo famoso metodo venga sempre chiamato prima di uscire al desktop?

Offline Nicola_D

  • 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:Far "morire" l'intera applicazione
« Risposta #5 il: 17 Settembre 2011, 10:38:34 CEST »
+1
override di onBackPressed
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 bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Far "morire" l'intera applicazione
« Risposta #6 il: 17 Settembre 2011, 10:50:38 CEST »
+1
Si, visto che l'esigenza vera e propria è azzerare la struttura dati, in occasione della pressione del tasto BACK esegui l'azzeramento della stuttura dati.  Mi sembra possa andare.
« Ultima modifica: 17 Settembre 2011, 10:52:10 CEST da bradipao »
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Qwertid

  • Utente junior
  • **
  • Post: 50
  • Respect: 0
    • Mostra profilo
Re:Far "morire" l'intera applicazione
« Risposta #7 il: 17 Settembre 2011, 13:07:06 CEST »
0
Grazie ad entrambi per la soluzione  :-)