2012-04-04 21 views
16

Descrizione:intenti per avviare l'attività - ma non portare in primo piano

  • attività Un è visibile (o sullo sfondo)
  • Intent ho viene ricevuto da una trasmissione con i supplementi preziosi e quindi passa gli extra a un nuovo intento I2 che verrà utilizzato per avviare l'attività A.
  • Risultato: Non portare l'attività davanti se l'attività è in background.

Codice:

Intent I2= new Intent(context, MyActivity.class); 
I2.putExtra(.. 
I2.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK); // | Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(I2); 

Nota: ho aggiunto no "android: taskAffinity" per manifestare .. Ho pensato che dovreste sapere

+2

perché vuoi avviareAttività quando non vuoi che sia in primo piano, ..? cosa vuoi fare ..? – ngesh

+0

Così l'ho aggiornato: NON PORTA l'attività in primo piano L'attività IF è in background! – pulancheck1988

+0

Non usare 'FLAG_ACTIVITY_MULTIPLE_TASK' per questo! Se si finiscono per iniziare più attività, sarà molto difficile gestirle. Questa è una lattina di worm che non vuoi aprire! –

risposta

7

se si desidera la vostra attività di essere in fondo aggiungere questa riga nel OnCreate di attività

moveTaskToBack(true); 
+0

Mostra comunque l'attività per un secondo. – zgulser

4

È possibile utilizzare questa riga nel metodo onCreate():

moveTaskToBack(true); 
+0

puoi dirmi come posso riavviare l'attività dopo chiamata 'moveTaskToBack (true);' ho usato 'Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_MULTIPLE_TASK' ma non riavvio l'attività ne fa uno nuovo .. nota ** i istanza stessa attività molte volte – medo

2

Non si desidera avviare uno Activity in background. Ci sono modi migliori per fare ciò che vuoi. Puoi avere il tuo registro Activity per ricevere la trasmissione Intent, per esempio. Otterrà la chiamata a onReceive() anche se è in background. È possibile determinare se lo Activity si trova in background impostando una variabile su true in onPause() e su false in onResume(). Quindi in onReceive(), se la variabile è true sei in background.

Problemi correlati