Mostrando entradas con la etiqueta Cómo crear un servicio en Android. Mostrar todas las entradas
Mostrando entradas con la etiqueta Cómo crear un servicio en Android. Mostrar todas las entradas

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.