Context.StartService(Intent) Metodo

Definizione

Richiedere l'avvio di un determinato servizio dell'applicazione.

[Android.Runtime.Register("startService", "(Landroid/content/Intent;)Landroid/content/ComponentName;", "GetStartService_Landroid_content_Intent_Handler")]
public abstract Android.Content.ComponentName? StartService (Android.Content.Intent? service);
[<Android.Runtime.Register("startService", "(Landroid/content/Intent;)Landroid/content/ComponentName;", "GetStartService_Landroid_content_Intent_Handler")>]
abstract member StartService : Android.Content.Intent -> Android.Content.ComponentName

Parametri

service
Intent

Identifica il servizio da avviare. La finalità deve essere completamente esplicita (specificando un nome di componente). I valori aggiuntivi possono essere inclusi negli extra finalità per fornire argomenti insieme a questa chiamata di avvio specifica.

Restituisce

Se il servizio viene avviato o è già in esecuzione, viene restituito l'oggetto ComponentName del servizio effettivo avviato; in caso contrario, se il servizio non esiste null viene restituito.

Attributi

Eccezioni

Commenti

Richiedere l'avvio di un determinato servizio dell'applicazione. La finalità deve contenere il nome completo della classe di un'implementazione del servizio specifica da avviare o un nome di pacchetto specifico di destinazione. Se la finalità è meno specificata, registra un avviso relativo a questo. In questo caso è possibile usare uno dei più servizi corrispondenti. Se questo servizio non è già in esecuzione, verrà creata un'istanza e avviata (creando un processo per tale servizio, se necessario); se è in esecuzione, rimane in esecuzione.

Ogni chiamata a questo metodo comporterà una chiamata corrispondente al metodo del servizio di android.app.Service#onStartCommand destinazione, con la <finalità</var>> specificata qui. In questo modo è possibile inviare processi a un servizio senza dover associare e chiamare all'interfaccia.

L'uso di startService() esegue l'override della durata del servizio predefinita gestita da #bindService: richiede che il servizio rimanga in esecuzione fino a #stopService quando non viene chiamato, indipendentemente dal fatto che i client siano connessi. Si noti che le chiamate a startService() non annidano: indipendentemente dal numero di chiamate startService(), una singola chiamata a #stopService lo arresterà.

Il sistema tenta di mantenere i servizi in esecuzione il più possibile. L'unica volta che devono essere arrestati è se l'applicazione in primo piano corrente usa così tante risorse che il servizio deve essere terminato. Se si verificano errori nel processo del servizio, verrà riavviato automaticamente.

Questa funzione genererà SecurityException se non si dispone dell'autorizzazione per avviare il servizio specificato.

<div class="attenzione">

<nota>forte:</strong> Ogni chiamata a startService() comporta un lavoro significativo eseguito dal sistema per gestire il ciclo di vita del servizio che circonda l'elaborazione della finalità, che può richiedere più millisecondi di tempo della CPU. A causa di questo costo, startService() non deve essere usato per il recapito frequente delle finalità a un servizio e solo per la pianificazione di un lavoro significativo. Usare #bindService bound services per le chiamate ad alta frequenza.

A partire dalla versione android.os.Build.VERSION_CODES#Odell'SDK, le app destinate alla versione android.os.Build.VERSION_CODES#O DELL'SDK o versione successiva non possono avviare i servizi in background. Vedere

Limiti di esecuzione in background per altri dettagli.

<nota>forte:</strong> A partire dalla versione android.os.Build.VERSION_CODES#Sdell'SDK, le app destinate alla versione android.os.Build.VERSION_CODES#S DELL'SDK o versione successiva non possono avviare i servizi in primo piano in background. Vedere

Modifiche al comportamento: app destinate ad Android 12

per altri dettagli. </Div>

Documentazione java per android.content.Context.startService(android.content.Intent).

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal Android e usato in base ai termini descritti in 2.5 Attribution License Creative Commons 2.5 Attribution License.

Si applica a

Vedi anche

  • StopService(Intent)
  • <xref:Android.Content.Context.BindService(Android.Content.Intent%2c+Android.Content.IServiceConnection%2c+Android.Content.IServiceConnection)>