miércoles, 4 de diciembre de 2013

Cómo crear un servicio en Android

En este post os voy a explicar cómo crear un servicio desde una aplicación Android.

Primero de todo veremos lo que es un servicio: Un servicio es un componente de una aplicación para realizar una operación más larga en funcionamiento mientras no se interactua con el usuario, o de proporcionar funcionalidad a otras aplicaciones a utilizar. Decir también que un servicio no es un hilo y no es un procesos que pueda correr separado de la aplicación.

Primero de todo crearemos la actividad principal en la cual llamaremos a nuestro servicio.
  
 public class MainActivity extends Activity {  
  @Override  
  protected void onCreate(Bundle savedInstanceState) {  
  super.onCreate(savedInstanceState);  
  setContentView(R.layout.activity_main);  
  }  
  @Override  
  protected void onDestroy() {  
  // TODO Auto-generated method stub  
  super.onDestroy();  
  }  
 }   

Después creamos otra clase que llamaremos FirstService.java.
 public class FirstService extends Service {  
 @Override  
 public IBinder onBind(Intent intent) {  
 // TODO Auto-generated method stub  
 return null;  
 }  
 @Override  
 public int onStartCommand(Intent intent, int flags, int startId) {  
 // TODO Auto-generated method stub  
 return super.onStartCommand(intent, flags, startId);  
 }  
 @Override  
 public void onDestroy() {  
 // TODO Auto-generated method stub  
 super.onDestroy();  
 }  
 }  

Ahora, desde la MainActivity, ya podremos llamar a FirstServices mediante un botón. Así que primero de todo se tendrá que añadir un botón en el layout. Ya que estamos, llamaremos al servicio pasando unos parámetros como ejemplo.
 @Override  
  protected void onCreate(Bundle savedInstanceState) {  
  super.onCreate(savedInstanceState);  
  setContentView(R.layout.activity_main);  
  Button test = (Button)findViewById(R.id.StartButton);  
  test.setOnClickListener(new OnClickListener() {  
  @Override  
  public void onClick(View v) {  
   // TODO Auto-generated method stub  
   Intent intent = new Intent(MainActivity.this, FirstService.class);  
   Bundle bundle = new Bundle();  
   bundle.putInt("Param1","2");  
   bundle.putInt("Param2", "2");  
   intent.putExtras(bundle);  
   startService(intent);  
   }  
  });  
  }  
  @Override  
  protected void onDestroy() {  
  // TODO Auto-generated method stub  
  super.onDestroy();  
  }  
 }  

Desde FirstServices recogeremos los parámetros enviados. Os pongo solo el método para no tener que re-copiar la clase FirstServices.java. Acordaros de recoger los parámetros con el mismo nombre que al llamar el servicio en el MainActivity.
 @Override  
  public int onStartCommand(Intent intent, int flags, int startId) {  
 // TODO Auto-generated method stub  
 Bundle b = intent.getExtras();  
 int i= b.getInt("Param1");  
 int j = b.getInt("Param2");  
 return super.onStartCommand(intent, flags, startId);  
 }  

Y por ultimo, tendremos que añadir al Manifest.xml el servicio para que lo reconozca.
 <application  
 android:allowBackup="true"  
 android:icon="@drawable/ic_launcher"  
 android:label="@string/app_name"  
 android:theme="@style/AppTheme" >  
 <activity  
 android:name="com.silencetime.MainActivity"  
 android:label="@string/app_name"  
 android:screenOrientation="portrait">  
 <intent-filter>  
 <action android:name="android.intent.action.MAIN" />  
 <category android:name="android.intent.category.LAUNCHER" />  
 </intent-filter>  
 </activity>  
 <service android:name=".FirstService" ></service>  
  </application>  

Y con esto ya podremos crear nuestro primer servicio. No os he puesto los imports ya que te los importa automaticamente. Espero que os ayude.

No hay comentarios:

Publicar un comentario