2010-09-26 19 views
7

He recorrido la Web, parece que no sé cómo hacer que un servicio de Android realmente HAGA algo. He encontrado muchos ejemplos de cómo crear uno básico, pero ninguno de los ejemplos parece mostrar cómo llamar al servicio de una actividad y hacer que el servicio haga algo.Servicio de Android: parece que no puede encontrar un ejemplo.

Por ejemplo, me gustaría tener un servicio en ejecución que enviará un mensaje de texto TCP a un servidor cuando se solicite. Puedo hacer el servicio y ejecutarlo, pero ¿cómo diablos hago que la actividad realice la llamada que pasa una cadena al método en el servicio que enviará el mensaje TCP?

Parece que debería ser algo fácil, pero simplemente no puedo entender, o encontrar un ejemplo, de cómo hacerlo. Tal vez no entiendo para qué se debería usar un servicio. Definitivamente quiero que funcione durante un largo período de tiempo, sin necesidad de gui, y las solicitudes de "servicio" para enviar mensajes TCP ... hum ...

+0

Solo como punto de aclaración (esto es algo que me tomó un tiempo entender), el concepto de "Servicio" en Android no es como el servicio de Windows, que se ejecuta en segundo plano sin cabeza. Es más como un hilo de trabajo en segundo plano, lo creas y le pides que haga su trabajo, luego puede disparar un evento cuando está hecho. –

Respuesta

1

Puedo hacer el servicio y ejecutarlo, pero ¿cómo diablos hago que la actividad realice la llamada que pasa una cadena al método en el servicio que enviará el mensaje TCP?

Utilice el patrón de encuadernación local. En this sample project, una actividad se une a un servicio, para obtener algunos datos recuperados por ese servicio (pronóstico del tiempo) en función de un cambio de ubicación. En this sample project, una actividad se une a un servicio para registrar un objeto detector para recibir notificaciones de cambios en la línea de tiempo identi.ca de un usuario.

O utilice IntentService y startService() para enviar un comando que será procesado por IntentService. En this sample project, implemento un IntentService que ejecuta una secuencia de comandos de BeanShell proporcionada por una persona que llama. En this sample project, implemento una actividad que envía el script de BeanShell al IntentService. Este par de ejemplos está diseñado para demostrar el uso de esta técnica en todas las aplicaciones, pero el enfoque también funciona bien en una sola aplicación.

Definitivamente quiero que funcione durante un largo periodo de tiempo

No you don't.

+1

Si solo está aprendiendo, me quedaré con la API de intención y dejo el patrón de enlace solo, es mucho más difícil de entender y lo deja constantemente comprobando si su referencia a su servicio es nula. IntentService es un buen lugar para comenzar http://developer.android.com/reference/android/app/IntentService.html – schwiz

Cuestiones relacionadas