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