Autore Topic: Apertura Activity ed esecuzione codice  (Letto 1112 volte)

Offline ticemamarz

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows XP
Apertura Activity ed esecuzione codice
« il: 13 Aprile 2012, 10:41:32 CEST »
0
Salve Ragazzi,
ho bisogno del vostro aiuto. Io non son molto esperto di android ma mi sto documentando un poco alla volta. Ci sono mille cose che devo ancora imparare e quindi vi chiedo aiuto.
Vi spiego il mio problema:
Il programma che sto scrivendo è un programma che deve essere portato in android dalla versione di WM 6.5. Mi sto dedicando ad esso con tutto me stesso ma ci sono alcuni intoppi nella logica dei Form in WM 6.5 ad Android. :-(
In WM 6.5, in alcune classi che ho realizzato, c'era la possibilità di creare un'istanza ad un form e di aprirlo quando si voleva. In Android ho provato a fare questo ma non ci si riesce. Giusto o sbaglio?
Ho notato pure che se apro una seconda activity e successivamente inserisco delle istruzioni sotto alla chiamata del metodo "startActivity(intent)" vengono prima eseguite le istruzioni sottostanti e poi si apre lì'activity secondaria. Come mai? è perchè Android ha una logica diversa rispetto a WM 6.5 giusto? come si può ovviare a questo fatto?

Spero di essere stato chiaro. Se non avete capito qualcosa mi trovate qui  :D

Vi ringrazio in anticipo. 

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:Apertura Activity ed esecuzione codice
« Risposta #1 il: 13 Aprile 2012, 16:01:34 CEST »
0
Scusa ma WM 6.5 che cosa è ?
adb logcat | tee /tmp/logcat | grep TAG

Offline ticemamarz

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows XP
Re:Apertura Activity ed esecuzione codice
« Risposta #2 il: 13 Aprile 2012, 16:45:04 CEST »
0
Ehi ciao iceweasel,
si scusa, non ho mai scritto per completo la sigla di WM 6.5. Cmq significa Windows Mobile 6.5. :-)

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Apertura Activity ed esecuzione codice
« Risposta #3 il: 13 Aprile 2012, 16:53:00 CEST »
0
In linea di massima cercare di fare un porting fedele di un'applicazione da un sistema ad un'altro è un'impresa titanica. Come hai intuito la logica di "come dovrebbe funzionare un'app" può essere radicalmente diversa tra i due SO, costringendoti necessariamente a ripensare l'applicazione e come l'utente può interagire con essa.

Citazione
c'era la possibilità di creare un'istanza ad un form e di aprirlo quando si voleva. In Android ho provato a fare questo ma non ci si riesce. Giusto o sbaglio?

Se non ho interpretato male quello che scrivi direi di no, non puoi pre-inizializzarti le activity. Il modo canonico per lanciare un'activity è attraverso "startActivity" che la crea on fly in quel momento, invocando il suo onCreate per inizializzarla.

Citazione
se apro una seconda activity e successivamente inserisco delle istruzioni sotto alla chiamata del metodo "startActivity(intent)" vengono prima eseguite le istruzioni sottostanti e poi si apre lì'activity secondaria. Come mai?

Perché android lancia la nuova attività non nel momento in cui chiami startActivity, ma nel momento in cui il codice in cui startActivity viene chiamata torna il controllo al sistema.
Semplificando potremmo dire che startActivity annuncia la volontà di aprire una nuova activity al sistema, ma fino a quando il sistema non riprende il controllo non riesce a catturare la richiesta per eseguirla.
Per questo se aggiungi istruzioni dopo startActivity le esegue prima di aprirti la seconda activity.

Citazione
come si può ovviare a questo fatto?

Onestamente non vedendo la cosa come un problema a cui ovviare... se davvero lo fosse basta fare in modo che startActivity sia l'ultima istruzione lanciata dalla funzione.


Offline zaxxon

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Archos 101 G9
  • Sistema operativo:
    Ubuntu 10.04
Re:Apertura Activity ed esecuzione codice
« Risposta #4 il: 14 Aprile 2012, 19:37:51 CEST »
0
In WM 6.5, in alcune classi che ho realizzato, c'era la possibilità di creare un'istanza ad un form e di aprirlo quando si voleva. In Android ho provato a fare questo ma non ci si riesce. Giusto o sbaglio?

Non so esattamente cosa fa un Form in Windows Mobile, ma hai verificato se è davvero necessario avere una nuova Activity? Magari ti basta una View da sostituire al volo a quella attiva e poi ripristinare quella vecchia quando devi chiudere il Form.

Ho notato pure che se apro una seconda activity e successivamente inserisco delle istruzioni sotto alla chiamata del metodo "startActivity(intent)" vengono prima eseguite le istruzioni sottostanti e poi si apre lì'activity secondaria. Come mai? è perchè Android ha una logica diversa rispetto a WM 6.5 giusto? come si può ovviare a questo fatto?

Potresti usare startActivityForResult in modo da ottenere che al termine venga chiamato onActivityResult sul Activity chiamante; utilizzando un flag puoi fare in modo che dopo la chiamata a startActivityForResult il programma si blocchi in attesa del termine della nuova Activity.

Codice (Java): [Seleziona]
...
boolean isTerminated = false;
...
{ ...
   startActivityForResult(...);
   while(isTerminated == false);
   ...
}
...

protected void onActivityResult(...)
{ ...
   isTerminated = true;
   ...
}

Offline Zappescu

  • Utente junior
  • **
  • Post: 110
  • Respect: +7
    • Mostra profilo
    • Tic Tank Toe
  • Dispositivo Android:
    HTC Magic
  • Play Store ID:
    Zapmobilegames
  • Sistema operativo:
    Win XP
Re:Apertura Activity ed esecuzione codice
« Risposta #5 il: 15 Aprile 2012, 12:57:15 CEST »
0
Io sinceramente non metterei un while con flag che mi blocca tutto per chissà quanto tempo.... rischi un ANR o anche altre skifezze.
Se le istruzioni vanno svolte solo dopo l'activity, le metti nell'onActivityResult al ritorno dall'activity (che hai lanciato con startactivityforresult) e basta.
Zapmobilegames website
Tic Tank Toe: a new approach for a classic game

Offline zaxxon

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Archos 101 G9
  • Sistema operativo:
    Ubuntu 10.04
Re:Apertura Activity ed esecuzione codice
« Risposta #6 il: 15 Aprile 2012, 15:07:37 CEST »
0
Beh, nel dubbio si può inserire nel corpo del while un Thread.yield() in modo da lasciare tempo macchina agli altri thread.

Ho pensato questa soluzione immaginando che l'uso che fa di questi Form nell'applicazione sia una specie di popup modale per raccogliere al volo degli input e poi proseguire... ma magari ho interpretato male io.

Offline ticemamarz

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows XP
Re:Apertura Activity ed esecuzione codice
« Risposta #7 il: 16 Aprile 2012, 12:00:53 CEST »
0
Ciao Ragazzi!!!  :-)
Volevo ringraziare tutti per le risposte. Soprattutto zaxxon che con la frase
Citazione
Non so esattamente cosa fa un Form in Windows Mobile, ma hai verificato se è davvero necessario avere una nuova Activity? Magari ti basta una View da sostituire al volo a quella attiva e poi ripristinare quella vecchia quando devi chiudere il Form.
mi ha illuminato.  ;-)
In effetti pensandoci bene ha ragione lui perchè in questo caso non ho proprio la necessità di cambiare Activity.
Non mi era venuta in mente questa soluzione. Sono nuovo di android e sto imparando a conoscerlo.
Ora ci provo e vi faccio sapere...:-)

Intanto GRAZIE MILLE A TUTTI.

Offline ticemamarz

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows XP
Re:Apertura Activity ed esecuzione codice
« Risposta #8 il: 17 Aprile 2012, 16:13:17 CEST »
0
Ciao ragazzi!
Ieri ho provato il consiglio di zaxxon ma nulla...anche se cambio il View di sottofondo non funziona perchè dovrei, appena cambiato il View, eseguire delle altre istruzioni ma queste vengono eseguite sempre prima che il View cambi e questo non mi va bene.  :-(
Forse devo appunto cambiare la logica che avevo pensato tempo fa.

Offline zaxxon

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Archos 101 G9
  • Sistema operativo:
    Ubuntu 10.04
Re:Apertura Activity ed esecuzione codice
« Risposta #9 il: 17 Aprile 2012, 18:04:16 CEST »
0
Cioè, chiamando la setContentView(...) nella tua Activity, la chiamata ritorna prima che venga cambiata a video la schermata?

Offline ticemamarz

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows XP
Re:Apertura Activity ed esecuzione codice
« Risposta #10 il: 18 Aprile 2012, 09:15:59 CEST »
0
Ciao zaxxon,
si esatto. La chiamata del metodo torna prima che venga cambiata la schermata a video :-(
Io vorrei che prima cambiasse la schemata a video (al ritorno da setContentView(...)) e poi continuasse a procedere con l'esecuzione del codice.
Sai dirmi come posso fare?

Grazie mille. :-)