Autore Topic: Mettere in "pausa" un activity fino al completamento degli intent  (Letto 1000 volte)

Offline r1si

  • Utente junior
  • **
  • Post: 73
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    lg 2x
  • Play Store ID:
    r1si
  • Sistema operativo:
    ubuntu 11.10
0
ciao ragazzi ,
vi illustro il mio problema,
ho un applicazione che selezionato una serie di operazioni le esegue in rapida sucessione premendo un tasto.
ogni azione è rappresentata da un intent che esegue un caricamento di un app nel market , oppure un installazione di un apk esterno .

attualmente la mia app fa tutto in rapida successione , ma il più delle volte si impappina specialmente quando gli intent diventano tanti ( più di 8)
quindi voleov riscrviere il codice in modo che:

mi appare un toast , lancio il primo intent ,l' activity va in pausa , termino l installazione o il download , con il tasto back mi torna alla main app che mi mostra il secondo toast e parte il secondo intent , così fino alla fine.
quindi
c'è un modo per fare attendere la fine di un intent prima di proseguire?

Offline Verandi

  • Moderatore
  • Utente normale
  • *****
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Mettere in "pausa" un activity fino al completamento degli intent
« Risposta #1 il: 21 Gennaio 2012, 18:21:55 CET »
0
Quindi hai otto righe di startActivity una dopo l'altra?
Secondo me dovresti fare una cosa del genere:
- Crei un ArrayList di Intent vuoto.
- Quando l'user preme il pulsante, aggiungi gli intent che vuoi
- Crei un metodo che controlli se l'array contiene intent, fa partire uno startActivity con l'intent in prima posizione e rimuove l'intent dall'array.
- Nell'onResume e nel listener del pulsante richiami il metodo che hai creato nel punto precedente.

Offline r1si

  • Utente junior
  • **
  • Post: 73
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    lg 2x
  • Play Store ID:
    r1si
  • Sistema operativo:
    ubuntu 11.10
Re:Mettere in "pausa" un activity fino al completamento degli intent
« Risposta #2 il: 21 Gennaio 2012, 19:05:23 CET »
0
grazie mille :)) domani mattina mi metto sotto a farlo :D in serata penso di far fnzionare :P

ho chiesto su stackoverflow , e mi hanno consigliato di usare startActivityForResult() e poi onActivityResult() non ha senso  vero ?
grazie mille :D

Offline Verandi

  • Moderatore
  • Utente normale
  • *****
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Mettere in "pausa" un activity fino al completamento degli intent
« Risposta #3 il: 21 Gennaio 2012, 19:24:58 CET »
0
Potrebbe funzionare se il market supportasse lo startActivityForResult, e credo non lo faccia, sia perché passa del tempo da quando l'utente preme sul pulsante installa a quando l'installazione termina (influenzata da una connessione altalenante, spazio disponibile), sia perché il market mi pare rimanga aperto e non vada in background da solo.
Sto seguendo la tua domanda su stackoverflow per vedere se qualcuno propone qualche altra idea.  :D

Offline r1si

  • Utente junior
  • **
  • Post: 73
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    lg 2x
  • Play Store ID:
    r1si
  • Sistema operativo:
    ubuntu 11.10
R: Mettere in "pausa" un activity fino al completamento degli intent
« Risposta #4 il: 21 Gennaio 2012, 20:30:39 CET »
0
Hai ragione l idea migliore è la tua :-) :-)

Inviato dal mio LG-P990 usando Tapatalk

Offline r1si

  • Utente junior
  • **
  • Post: 73
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    lg 2x
  • Play Store ID:
    r1si
  • Sistema operativo:
    ubuntu 11.10
Re:Mettere in "pausa" un activity fino al completamento degli intent
« Risposta #5 il: 22 Gennaio 2012, 15:34:52 CET »
0
ho iniziato a farlo , ma mi da problemi l' arrayList , se tra un pò non risolvo posto il codice :D

Offline Verandi

  • Moderatore
  • Utente normale
  • *****
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Mettere in "pausa" un activity fino al completamento degli intent
« Risposta #6 il: 22 Gennaio 2012, 15:39:05 CET »
0
ArrayList<Intent> intents = new ArrayList<Intent>(), intents.add(intent), intents.remove(intent), intents.get(posizione).  ;-)

Offline r1si

  • Utente junior
  • **
  • Post: 73
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    lg 2x
  • Play Store ID:
    r1si
  • Sistema operativo:
    ubuntu 11.10
Re:Mettere in "pausa" un activity fino al completamento degli intent
« Risposta #7 il: 22 Gennaio 2012, 16:18:06 CET »
0
:) grazie mille :p
il problema non è l'ì ehehe
praticamente genero una coda ma in realtà non mi passa il valore ,
penso sia un problema di incapsulamento.
sto cercando di trovare un problema con il debug xD
ma mi sto impappinando :D

EDIT :
ora devo far funzionare l0' on resume
« Ultima modifica: 22 Gennaio 2012, 16:23:07 CET da r1si »

Offline r1si

  • Utente junior
  • **
  • Post: 73
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    lg 2x
  • Play Store ID:
    r1si
  • Sistema operativo:
    ubuntu 11.10
Re:Mettere in "pausa" un activity fino al completamento degli intent
« Risposta #8 il: 22 Gennaio 2012, 16:28:17 CET »
0
eccomi hai per caso delucidazioni su come impostare l onResume ?
nel senso devo crearlo dentro l' onCreate?
oppure fuori ?
devo leggere un pò di docuemntazione a rigurado mi sa

Offline Verandi

  • Moderatore
  • Utente normale
  • *****
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Mettere in "pausa" un activity fino al completamento degli intent
« Risposta #9 il: 22 Gennaio 2012, 16:29:46 CET »
0
Deve andare fuori, è un metodo della classe astratta Activity, proprio come lo è l'onCreate. :)

Offline r1si

  • Utente junior
  • **
  • Post: 73
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    lg 2x
  • Play Store ID:
    r1si
  • Sistema operativo:
    ubuntu 11.10
Re:Mettere in "pausa" un activity fino al completamento degli intent
« Risposta #10 il: 23 Gennaio 2012, 00:04:29 CET »
0
ho ancora problemi con la coda,
mi spiego.
se io dichiaro un arrayList pubblico a inizio classe

public ArrayList<Intent> coda = new ArrayList<Intent> ;

poi nell metodo overwrite onCreate() ,

lo chiamo così

coda = CreoCoda(coda, popUp, intentold, pkg, set, null, intentGoNext, buttonNext);
dove creoCoda è un metodo che ritorna la coda completa in riferimento a tutti i valori dell app.

poi faccio sempre in questo metodo ( potrei farlo esterno e chiamarlo ma è solo per testare )

if(coda.isEmpty()){
                    Log.d("test","vuoto");
                }
                else{
                    Log.d("test","non vuoto");
                    Log.d("test","non while");
                    Intent temp = checkCoda(coda);
                    startActivity(temp);
                    Log.d("test","dopo");
                    String poptext = popUp.get(0);
                    popUp.remove(0);
                    Toast toast = Toast.makeText(context, poptext, duration);
                    toast.show();
                }


ok ora nel OnResume()
do questo comando riprendendo coda.

Codice (Java): [Seleziona]
protected void onResume() {
       
        final Context context = getApplicationContext();
        final int duration = Toast.LENGTH_SHORT;
        final Intent intentGoNext = new Intent(getApplicationContext(),ConfigurationWizardActivity.class);
       
       
        if(!coda.isEmpty()){
            Intent temp = checkCoda(coda);
            startActivity(temp);
            Log.d("test","dopo");
            String poptext = popUp.get(0);
            popUp.remove(0);
            Toast toast = Toast.makeText(context, poptext, duration);
            toast.show();
        }
        if(coda.isEmpty()){
            Log.i("QUEUE", " queue finish");
            Ptools.erase("GOL");
            Ptools.erase("GOS");
            Ptools.erase("GOC");
            finish();
            startActivity(intentGoNext);
        }

        super.onResume();
    }


bene non funziona :((
passa subito alla fase negativa del onResume()
e passa alla sucessiva activoty senza eseguire nulla :(
bhooo


Offline Verandi

  • Moderatore
  • Utente normale
  • *****
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Mettere in "pausa" un activity fino al completamento degli intent
« Risposta #11 il: 23 Gennaio 2012, 00:31:47 CET »
0
Secondo me dovresti popolare l'arraylist solo al click del pulsante, preoccupandoti ogni volta di resettarlo prima di popolarlo.
Aggiungerei una variabile booleana che indichi se è il primo avvio o meno, e in base alla quale scegliere se controllare se la coda è vuota o meno.

Offline r1si

  • Utente junior
  • **
  • Post: 73
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    lg 2x
  • Play Store ID:
    r1si
  • Sistema operativo:
    ubuntu 11.10
Re:Mettere in "pausa" un activity fino al completamento degli intent
« Risposta #12 il: 23 Gennaio 2012, 00:38:49 CET »
0
grazie per i consigli :)
eseguo tutto

EDIT:
ci siamo quasi :D
« Ultima modifica: 23 Gennaio 2012, 01:20:59 CET da r1si »