Autore Topic: chiudere applicazione  (Letto 3704 volte)

Offline softmystery

  • Utente junior
  • **
  • Post: 105
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg optimus one
  • Sistema operativo:
    2.2
chiudere applicazione
« il: 25 Febbraio 2011, 17:18:13 CET »
0
Salve ragazzi! premetto che ho letto: http://www.anddev.it/index.php/topic,412.0.html ma mi dice di considerare di aprire un nuovo topic dato che da più di 120 giorni nessuno posta!
allora , ho fatto ciò che c'è scritto! in un'Pplicazione con una scheramta (provato con un hello world) funziona fantasticamente bene! funziona anche con più schermate (come la mia app che devo chiudere) ma mi riesegue l'ultima schermata , non mi chiude l'applicazione...., ovviamente mi esce un force close, ma io poi ho pensato di gestirlo con un try{}catch(){} e l'eccezione e il force close è scomparso, ma comunque mi riesegue l'ultima schermata. ecco cosa dice il logCat quando premo su chiudi_sistema nel file fine.java, che si trovano nel package occorrente.game.gude.  il package principale che ha il main per eseguire la'pplicazione invece è com.GameGuide

Codice (XML): [Seleziona]
02-25 17:51:36.212: INFO/ActivityManager(66): Starting activity: Intent { cmp=com.GameGuide/occorrente_game_guide.chiudi_sistema }
02-25 17:51:37.222: INFO/ActivityManager(66): Displayed activity com.GameGuide/occorrente_game_guide.chiudi_sistema: 788 ms (total 788 ms)
02-25 17:51:38.552: INFO/Process(1235): Sending signal. PID: 1235 SIG: 9
02-25 17:51:38.591: INFO/ActivityManager(66): Process com.GameGuide (pid 1235) has died.
02-25 17:51:38.622: INFO/WindowManager(66): WIN DEATH: Window{43ff4198 com.GameGuide/occorrente_game_guide.fine paused=false}
02-25 17:51:38.622: INFO/WindowManager(66): WIN DEATH: Window{4400cb18 com.GameGuide/occorrente_game_guide.chiudi_sistema paused=false}
02-25 17:51:38.741: INFO/ActivityManager(66): Start proc com.GameGuide for activity com.GameGuide/occorrente_game_guide.fine: pid=1250 uid=10043 gids={3003, 1015}
02-25 17:51:39.251: INFO/UsageStats(66): Unexpected resume of com.GameGuide while already resumed in com.GameGuide
02-25 17:51:40.202: WARN/InputManagerService(66): Got RemoteException sending setActive(false) notification to pid 1235 uid 10043
02-25 17:51:40.491: INFO/ActivityManager(66): Displayed activity com.GameGuide/occorrente_game_guide.fine: 1793 ms (total 1793 ms)

Offline softmystery

  • Utente junior
  • **
  • Post: 105
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg optimus one
  • Sistema operativo:
    2.2
Re:chiudere applicazione
« Risposta #1 il: 25 Febbraio 2011, 17:41:06 CET »
0
mi sà che vi devo precisare che testo l'applicazione su emulatore su target 2.2...
leggo un pò in giro che froyo non permette di chiudere un'applciazione... stò leggendo qui :  http://www.androlib.com/android.application.uk-co-neilandtheresa-forceclosebutton-qzFF.aspx
e anche negli snippet nel topic "killare un processo" (che non mi funziona" c'è scritto!
uffy non ci voglio credere che non posso chiudere la mia applicazione  o_O  :'(

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:chiudere applicazione
« Risposta #2 il: 25 Febbraio 2011, 17:45:30 CET »
0
1) Usa il tasto edit e non fare doppi post.

2) puoi usare finish() per chiudere l'activity corrente, le altre te le chiudi in cascata per esempio col metodo che ha usato noodles qui terminare un'activity padre, dopo terminazione figlia - Android Developers Italia
Postate il LogCat LogCat LogCat LogCat LogCat

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:chiudere applicazione
« Risposta #3 il: 25 Febbraio 2011, 18:30:31 CET »
0
io al riguardo ho un'idea che però è da testare.
E' un idea sporca, vi avverto, ma forse può funzionare....
Creaiamo un'activity FAKE, fake nel senso che non fa niente...
In questa activity, non creiamo layout,non creiamo elementi, niente. Nella funzione onResume() ci mettiamo un bel this.finish().
In questo modo (correggetemi se sbaglio) l'activity viene chiusa nel momento in cui viene aperta (perchè non si perde tempo a caricare view o cose silimi).
Bene, se noi avviamo quest'activity con il flag FLAG_ACTIVITY_CLEAR_TASK tutte le altre activity dovrebbero essere chiuse al momento dell'apertura di questa, che si chiude subito dopo e quindi causa la chiusura di tutta l'applicazione...

Qui la definizione del flag:
Citazione
If set in an Intent passed to Context.startActivity(), this flag will cause any existing task that would be associated with the activity to be cleared before the activity is started. That is, the activity becomes the new root of an otherwise empty task, and any old activities are finished. This can only be used in conjunction with FLAG_ACTIVITY_NEW_TASK.

se invece non ho capito bene e quel flag non chiude tutte le activity, c'è anche quest'altro: FLAG_ACTIVITY_CLEAR_TOP
Citazione
If set, and the activity being launched is already running in the current task, then instead of launching a new instance of that activity, all of the other activities on top of it will be closed and this Intent will be delivered to the (now on top) old activity as a new Intent.

For example, consider a task consisting of the activities: A, B, C, D. If D calls startActivity() with an Intent that resolves to the component of activity B, then C and D will be finished and B receive the given Intent, resulting in the stack now being: A, B.

The currently running instance of activity B in the above example will either receive the new intent you are starting here in its onNewIntent() method, or be itself finished and restarted with the new intent. If it has declared its launch mode to be "multiple" (the default) and you have not set FLAG_ACTIVITY_SINGLE_TOP in the same intent, then it will be finished and re-created; for all other launch modes or if FLAG_ACTIVITY_SINGLE_TOP is set then this Intent will be delivered to the current instance's onNewIntent().

This launch mode can also be used to good effect in conjunction with FLAG_ACTIVITY_NEW_TASK: if used to start the root activity of a task, it will bring any currently running instance of that task to the foreground, and then clear it to its root state. This is especially useful, for example, when launching an activity from the notification manager.

Correggetemi se sbaglio,ma è un'idea che mi è saltata in mente...
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 softmystery

  • Utente junior
  • **
  • Post: 105
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg optimus one
  • Sistema operativo:
    2.2
Re:chiudere applicazione
« Risposta #4 il: 25 Febbraio 2011, 23:06:33 CET »
0
ok dai! appena posso provo entrambi.. e ovviamente vi faccio sapere
[edit] raga salve sono la sorella. mio fratello stà maluccio fisicamente e mi ha detto di dirvi che non vi risponderà a breve.... teme che se non risponde lo eliminate dal forum XD bye bye
« Ultima modifica: 26 Febbraio 2011, 22:15:18 CET da softmystery »

Offline softmystery

  • Utente junior
  • **
  • Post: 105
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg optimus one
  • Sistema operativo:
    2.2
Re:chiudere applicazione
« Risposta #5 il: 28 Febbraio 2011, 20:54:36 CET »
0
ciao ragazzi finalmente son tornato. allora finalmente ho capito a cosa serve startActivityForResult() :)
comunque non ho capito bene, cosa dovrei fare con  onResume(), diciamo che forse sarebbe meglio se lo sperimenti tu, dato che tu hai l'idea, e potresti capire cosa vorresti fare.... credo... :) farò altre prove non mi arrendo, devo per forza chiudere la mia applicazione.


dopo molto tempo di insuccessi, ho deciso di usare onResume con onDestroy()n cioè dare retta al ciclo di vita di android. ma se stò sbagliando strada, vi prego di avvisarmi e darmi qualche suggerimento! grazie
« Ultima modifica: 03 Marzo 2011, 09:37:49 CET da softmystery »

Offline softmystery

  • Utente junior
  • **
  • Post: 105
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg optimus one
  • Sistema operativo:
    2.2
Re:chiudere applicazione
« Risposta #6 il: 03 Marzo 2011, 13:59:53 CET »
0
dopo tanta fatica, ho risolto con onpause() ....

Codice (Java): [Seleziona]
public void onPause(){
super.onPause();
this.finish();
}

banale ma non tanto! XD


no ragazzi, non và bene così.... se clicco su back mi si chiude tutto e io non voglio questo! uffy ma davvero nessuno ha mai chiuso una propria app? :( :( :(
« Ultima modifica: 04 Marzo 2011, 13:11:13 CET da softmystery »