Download - Services
-
Instructor: Rodrigo Ivn Fonseca Daza
-
Un Service es un proceso en una aplicacin Android que se ejecuta incluso cuando el usuario est interactuando con diferentes Activities
Tambin se puede ejecutar cuando la aplicacin es invisible para el usuario
-
Para ejecutar tareas que requieran una cantidad de tiempo considerable, pero que no sean prerrequisito para interactuar con la interfaz grfica Ej: descarga de archivos, reproduccin de audio,
actualizacin de ciertos contenidos
Para posible intercambio de acciones entre varias aplicaciones
-
public class MyService extends Service {
@Override
public IBinder onBind(Intent arg0) {
return null;
}
}
-
@Override
public int onStartCommand(Intent
intent, int flags, int startId) {
// Ejecutar accin del servicio
return super.onStartCommand(intent,
flags, startId);
}
-
@Override
public void onDestroy() {
// Dar por terminado el servicio
super.onDestroy();
}
-
Intent i = new
Intent(MainActivity.this,
MyService.class);
startService(i);
Intent i = new
Intent(MainActivity.this,
MediaService.class);
stopService(i);
-
startService no es la nica manera de iniciar el proceso dentro de un Service
Tambin se pueden enlazar uno o ms Activities al Service, de manera que el proceso no se ejecute indefinidamente si la actividad desde el que fue llamado no es visible.
-
@Override
public IBinder onBind(Intent intent) {
// Un Activity se enlaza por primera vez al //Service
return mBinder;
}
@Override
public void onRebind(Intent intent) {
// Un Activity se enlaza al Service despes de un //llamado de onUnbind
}
@Override
public boolean onUnbind(Intent intent) {
// Todos los Activities se desenlazan del Service
return mAllowRebind;
}
-
public class MyBinder extends Binder {
public void showBinderMessage() {
Toast.makeText(MediaService.this,
"Mensaje de notificacin",
Toast.LENGTH_SHORT).show();
}
public MediaService getService() {
return MediaService.this;
}
}
-
public ServiceConnection mMyBoundServiceConnection = new ServiceConnection() {
public void onServiceDisconnected(ComponentName name) {
Toast.makeText(MainActivity.this, "Service disconnected", Toast.LENGTH_LONG).show();
}
@Override
public void onServiceConnected(ComponentName name, IBinder binder) {
MyBinder myBinder = (MyBinder)binder;
myBinder.showBinderMessage();
mService = myBinder.getService();
mService.showServiceMessage();
Toast.makeText(MainActivity.this, "Service connected", Toast.LENGTH_LONG).show();
}
};
-
public void bindMyBoundService(View view) {
Intent i = new Intent(this, MediaService.class);
bindService(i, mMyBoundServiceConnection, Context.BIND_AUTO_CREATE);
}
public void unbindMyBoundService(View view) {
if(mService !=null){
unbindService(mMyBoundServiceConnection);
mService = null;
}
}