Un Service es una aplicación en Android que se ejecuta en background sin tener que interactuar con el usuario. Por ejemplo, cuando usamos una aplicación, puede que queramos ejecutar algo de música en background a la vez. En este caso, el código que está ejecutando la música en background no necesita interactuar con el usuario, y por ello puede ejecutarse como un Service. Los Services son ideales tambien para situaciones en las cuales no tenemos que tener presente una UI para el usuario. Un buen ejemplo de este scenario es una aplicación que continuamente crea un log de coordenadas geográficas del dispositivo. En este caso podemos escribir un Service que haga algo en background.
Para comenzar, vamos a crear un Service, aunque lo único que haremos es crearlo y parar su ejecución, no hará ninguna función mas, pero aprenderemos a crearlo. En entradas posteriores veremos como podemos hacer que haga algo y ver mejor como funcionan.
Con esta pequeña introducción, vamos a ponernos manos a la obra:
-
Creación del Proyecto
Para crear nuestro proyecto, vamos a pinchar en File -> New -> Android Application Project. En el caso de que la última opción no aparezca, podemos pinchar en “Other” con el cual nos aparecerá una ventana para elegir entre una lista. Para filtrar los resultados, podemos escribir “Android” en el cuadro de texto que encontraremos y así nos será mas fácil.
Una vez se nos muestra la primera ventana del asistente, elegiremos un nombre para nuestro proyecto, yo en mi caso lo he llamado “EjemploService”, aunque no es importante y podeis poner el que querais. El resto de opciones podeis dejarlas como querais.
A medida que avanzamos en el asistente vamos a encontrar una ventana donde se nos permitirá dar un nombre a nuestra Activity principal, yo en mi caso lo he llamado ServiceActivity, y su archivo layout se llama activity_service.xml. Este archivo layout se encuentra en la carpeta res/layoout, y en él definiremos la interfaz gráfica de nuestra Activity.
Con esto, tendremos nuestro proyecto ya creado, y podemos continuar con la construcción de la aplicación.
-
ServiceActivity
Una vez tenemos creado nuestro proyecto, tendremos nuestra clase Activity y su layout, ubicado como bien hemos especificado en la carpeta res/layout. Modificaremos su código para que quede como este:
Podemos observar que tenemos 2 View del tipo Button, los cuales serán los encargados de comenzar el Service y de pararlo cuando deseemos. Hemos establecido valores en el atributo onClick, para luego crear métodos en la activity con el valor de estos atributos.android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".ServiceACtivity"><Buttonandroid:id="@+id/btnStart"android:layout_width="fill_parent"android:layout_height="wrap_content"android:onClick="onClickComenzar"android:text="Comenzar Servicio"/><Buttonandroid:id="@+id/btnStop"android:layout_width="fill_parent"android:layout_height="wrap_content"android:onClick="onClickParar"android:text="Parar Servicio"/></LinearLayout>
Por otro lado, tenemos la clase ServiceActivity.java, cuya funcionalidad principal será comenzar el Service y pararlo cuando pulsemos el botón de detenerlo. Su código es el siguiente:
El código de nuestra Activity es bastante simple, lo único que hacemos es crear los 2 métodos para que los botones tengan funcionalidadpackagecom.example.services;importandroid.app.Activity;importandroid.content.Intent;importandroid.os.Bundle;importandroid.view.View;publicclassServiceActivityextendsActivity {@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_service);}publicvoidonClickComenzar(View v){startService(newIntent(getBaseContext(), MyService.class));}publicvoidonClickParar(View v){stopService(newIntent(getBaseContext(), MyService.class));}}
- public void onClickComenzar(View v)
En este método llamamos a otro método, llamado startService, y como
argumento le pasamos un Intent el cual recibe el context de nuestra
aplicación, y la clase MyService.class, que será la que contenga el
servicio (Aún no la hemos creado).
publicvoidonClickComenzar(View v){startService(newIntent(getBaseContext(), MyService.class));} - public void onClickParar(View v)
En este otro método invocaremos el método stopService el cual acepta
como argumento un Intent el cual hemos creado nuevo con el context de
nuestra Activity y el nombre de la clase de nuestro Service
(MyService.class), que como he dicho anteriormente aún no hemos creado,
pero será el siguiente paso.
publicvoidonClickParar(View v){stopService(newIntent(getBaseContext(), MyService.class));}
- public void onClickComenzar(View v)
En este método llamamos a otro método, llamado startService, y como
argumento le pasamos un Intent el cual recibe el context de nuestra
aplicación, y la clase MyService.class, que será la que contenga el
servicio (Aún no la hemos creado).
-
MyService
Ahora vamos a crear nuestra clase para el Service, la cuál heredará de la clase Service. Para ello nos dirigimos a nuestro package (com.example.services en mi caso) y crearemos una nueva clase en su interior.
Una vez nuestra clase esté creada, vamos a modificarla para que quede como la siguiente:
Vamos a explicar un poco los métodos que vemos:packagecom.example.services;importandroid.app.Service;importandroid.content.Intent;importandroid.os.IBinder;importandroid.widget.Toast;publicclassMyServiceextendsService {@OverridepublicIBinder onBind(Intent arg0) {// TODO Auto-generated method stubreturnnull;}@OverridepublicintonStartCommand(Intent intent,intflags,intstartId) {// TODO Auto-generated method stubToast.makeText(this,"Servicio en Ejecucion", Toast.LENGTH_SHORT).show();returnSTART_STICKY;}@OverridepublicvoidonDestroy() {// TODO Auto-generated method stubsuper.onDestroy();Toast.makeText(this,"Servicio destruido", Toast.LENGTH_SHORT).show();}}
- onBind(Intent arg0)
Vamos a ver su código:
Este método permite ligar una actividad a un servicio. Esto permite a la activity tener acceso a los miembros y métodos en el interior del Service. Por ahora, retornamos null para este método ya que en esta entrada solo veremos como crearlo.@OverridepublicIBinder onBind(Intent arg0) {// TODO Auto-generated method stubreturnnull;}
- onStartCommand(Intent intent, int flags, int startID)
Vamos a ver su código:
Este método es llamado cuando hacemos que el servicio se ejecute explícitamente mediante un método startService(). Este método ejecutará todo el código que necesitemos que haga nuestro Service. Finalmente, retornamos la constante START_STICKY para que nuestro service siga ejecutandose hasta que lo detengamos explícitamente.@OverridepublicintonStartCommand(Intent intent,intflags,intstartId) {// TODO Auto-generated method stubToast.makeText(this,"Servicio en Ejecucion", Toast.LENGTH_SHORT).show();returnSTART_STICKY;}
- onDestroy()
Vamos a ver su código:
Este método es llamado cuando el servicio es detenido usando el método stopService(), aquí es donde limpiamos los recursos que hayan sido usados por nuestro service.@OverridepublicvoidonDestroy() {// TODO Auto-generated method stubsuper.onDestroy();Toast.makeText(this,"Servicio destruido", Toast.LENGTH_SHORT).show();}
- onBind(Intent arg0)
Vamos a ver su código:
-
AndroidManifest.xml
Finalmente, para que nuestro Service puede usarse, tenemos que declararlo en el AndroidManifest de nuestra aplicación. A continuación vemos como se hace:
Vemos que hemos agregado la línea:xmlversion="1.0"encoding="utf-8"?>package="com.example.services"android:versionCode="1"android:versionName="1.0"><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="17"/><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme"><activityandroid:name="com.example.services.ServiceActivity"android:label="@string/app_name"><intent-filter><actionandroid:name="android.intent.action.MAIN"/><categoryandroid:name="android.intent.category.LAUNCHER"/></intent-filter></activity><serviceandroid:name=".MyService"/></application></manifest>
Si quisieramos que nuestro service estuviera disponible para otras aplicaciones, podríamos añadir un action:<serviceandroid:name=".MyService"/>
<serviceandroid:name=".MyService"><intent-filter><actionandroid:name="sekth.droid.Services.MyService"/></intent-filter></service>
Con esto ya tendríamos nuestra aplicación funcional, podemos ejecutarla en el emulador y ver como funciona, aunque realmente no haga nada interesante.
Podemos ver unas capturas aunque tengan poco contenido:
A continuación un video sobre la aplicación en tiempo real:
Con esta entrada, hemos visto la manera en la que podemos crear un Service en Android, aunque en este caso no haga naad mas que ocupar ram haciendo nada, pero en futuras entrada podemos ver un poco mas el enfoque que podemos darle para que haga diferentes tareas.
El código del ejemplo podeis descargarlo de aquí.
Sin más, cualquier aporte o corrección es bienvenido.
Saludos!!!
Fuente: http://sekthdroid.wordpress.com/2013/02/10/crear-service-en-android/
TITIAN SPORTS BETTING RATINGS | TIGERIANS
ResponderEliminarTITIAN SPORTS rocket league titanium white octane BETTING 출장마사지 RATINGS. TITIAN titanium necklace SPORTS BETTING RATINGS. TITIAN how strong is titanium SPORTS BETTING RATINGS. TITIAN SPORTS BETTING RATINGS. TITIAN SPORTS BETTING RATINGS. TITIAN SPORTS BETTING RATINGS. TITIAN SPORTS BETTING thaitanium