2010-02-25 27 views

Respuesta

35

La aplicación puede iniciar el servicio con la ayuda del método Context .startService. El método llamará al método onCreate del servicio si el servicio aún no está creado; de lo contrario, se llamará al método onStart. Aquí está el código:

Intent serviceIntent = new Intent(); 
serviceIntent.setAction("com.testApp.service.MY_SERVICE"); 
startService(serviceIntent); 
1

El API Demos tiene algunos ejemplos que inician servicios.

1

Utilice un método Context.startService().

Y lea this.

44

Añadir esto en su código

Intent serviceIntent = new Intent(this, ServiceName.class); 
    startService(serviceIntent); 

No se olvide de agregar la etiqueta de servicio en el archivo AndroidManifest.xml

<service android:name="com.example.ServiceName"></service> 

Desde el Android official documentation:

Precaución: Un servicio se ejecuta en el mismo proceso que la aplicación en que se declara y en el hilo principal de esa aplicación, por defecto . Por lo tanto, si su servicio realiza operaciones intensivas o de bloqueo mientras el usuario interactúa con una actividad de la misma aplicación, , el servicio ralentizará el rendimiento de la actividad. Para evitar afectar el rendimiento de la aplicación , debe iniciar un nuevo hilo dentro del servicio .

+0

¿me puede dar cómo comenzar s Código de hilo ervicein –

1

Primero cree el servicio desde el archivo android Manifest.xml (es decir, desde la pestaña de la aplicación) y asígnele un nombre.
En la actividad en algún evento, como clic o toque para incluir el código del servicio:

public void onClick(View v) 
{ 
    startService(new Intent(getApplicationContext(),Servicename.class)); 
} 

Si desea detener el funcionamiento o iniciado el servicio a continuación, incluir este código:

public void onclick(View v) 
{ 
    stopService(new Intent(getApplicationContext,Servicename.class)); 
} 
0

Si Desea iniciar un servicio y debe ejecutarse en segundo plano, use START_STICKY en su servicio correspondiente.

Puede comenzar servvice con el arranque también,

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

Y crear receptor,

<receiver android:name=".auth.NotificationBroadcast" android:enabled="true" > 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 
</receiver> 

En Receptor brodcast añadir,

@Override 
    public void onReceive(Context context, Intent intent) { 

     System.out.println("BroadcastReceiverBroadcast--------------------ReceiverBroadcastReceiverBroadcastReceiver----------------BroadcastReceiver"); 

     if (intent != null) { 
      String action = intent.getAction(); 

     switch (action) { 
      case Intent.ACTION_BOOT_COMPLETED: 
       System.out.println("Called on REBOOT"); 
       // start a new service 
       startService(new Intent(getApplicationContext(),Servicename.class)); 

       break; 
      default: 
       break; 
     } 
    } 
} 

Y el servicio es como,

Cuestiones relacionadas