2013-04-17 19 views
15

solito inizio un'attività con questo codice:Android: Come avviare attività in background

Intent i = new Intent(context, MyActivity.class); 
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(i); 

Ma come faccio a iniziare l'attività in modo che rimane in background?

+0

se avete bisogno di fare qualcosa in background uso Servizio invece di attività – Selvin

+1

Come detto in commenti e risposte, non è possibile avviare un'attività in modo che rimanga sullo sfondo (è necessario utilizzare un ** Servizio ** per questo). – Leeeeeeelo

+1

So che i servizi vengono utilizzati per i processi in background. Ma la domanda non era "dovrei usare Activity per i processi in background" .. Invece solo per verificare se posso accelerare il tempo di inizializzazione dell'Attività avviandolo in anticipo. Sembra che non sia possibile, se si tratta di un'attività ordinaria. Grazie a tutti coloro che hanno dedicato il loro tempo a rispondere alla domanda! – digitalfootmark

risposta

0

L'attività è solitamente destinata all'utente. Se non hai bisogno di un'interfaccia utente forse non hai bisogno di sottoclasse l'attività. Prendi in considerazione l'utilizzo di i.e. Service o IntentService per il tuo compito. Oppure puoi impostare il tema dell'attività su .NoDisplay.

2

U può fare tre cose

Se u vuole svolgere lungo lavoro in esecuzione in background con l'aggiornamento dell'interfaccia utente. Usa Asyntask. Se si desidera eseguire un'attività di lunga durata in background, utilizzare solo intentservice. Se vuoi un compito in background che non sia troppo pesante, un po 'di lavoro usa i servizi.

+0

I servizi vengono eseguiti nel thread dell'interfaccia utente, pertanto se hang utilizzando app pesante su di esso app potrebbe essere possibile utilizzare servizi che hanno un thread di lavoro. –

+0

Con IntentService, una volta avviato, continuerà a funzionare anche se l'interfaccia utente è stata chiusa o non è in esecuzione? –

7

Per mantenere un'attività in esecuzione in background, è possibile utilizzare i servizi. Creare un servizio in background come:

import android.app.Service; 
import android.content.Intent; 
import android.os.Binder; 

import android.os.IBinder; 

public class BackgroundService extends Service { 


    private final IBinder mBinder = new LocalBinder(); 

    public class LocalBinder extends Binder { 
     BackgroundService getService() { 
      return BackgroundService.this; 
     } 
    } 


    public int onStartCommand(Intent intent, int flags, int startId) { 
     return START_STICKY; 
    } 

    @Override 
    public IBinder onBind(Intent intent) { 
     return mBinder; 
    } 
} 

chiamate il servizio nel OnCreate() della vostra attività principale in questo modo -

startService(new Intent(MainActivity.this,BackgroundService.class)); 
+0

dovresti anche aggiungere "this.finish();" che chiuderà l'attività nel 'onCreate()' dell'attività principale. –

Problemi correlati