Android ¿es posible ejecutar un servicio en segundo plano hasta que lo detengamos?

En mi aplicación, las cosas para iniciar sesión y cerrar sesión están ahí. Quiero que una vez que el inicio de sesión de un usuario signifique que recibirá actualizaciones del servidor como en forma de mensaje.

en cada 10 segundos, el servidor envía nuevos mensajes. Quiero que cada usuario que haya iniciado sesión obtenga todos los mensajes actualizados del servidor uno por uno desde el servidor.

Cuando un usuario hace clic en el botón de inicio de sesión, el servicio se iniciará. y cerrar sesión significa que el servicio se detendrá.

me gustó esto

public class MessageService extends Service {

    public String currentMessage="";

    @Override
    public IBinder onBind(Intent arg0) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        Toast.makeText(this,"Service created ...", Toast.LENGTH_LONG).show();
        checkForCurrentTimestamp();

    }


    private void checkForCurrentTimestamp() {
        //check TimeSatmp with Server TimeStamp
        //if(!same)
        //currentMessage= get message stored in server

    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Toast.makeText(this, "Service destroyed ...", Toast.LENGTH_LONG).show();
    }
}

y dentro del loginButton de mi LoginActivity, haga clic en escribo para iniciar el servicio y logoutButton haga clic en detener el servicio.

¿Está actualizando todos los mensajes uno por uno para cada usuario hasta que se desconectan?

¿Es esta la forma de escribir?

preguntado el 08 de noviembre de 11 a las 10:11

1 Respuestas

Esto iniciará una nueva instancia de servicio en cada inicio de sesión, lo que aumentará el consumo de batería y disminuirá el rendimiento en una cantidad significativa. así que implemente onBind de modo que pueda usar BindService de modo que el IBinder devuelto pueda manejar los mensajes del servidor para su usuario.

respondido 08 nov., 11:14

eso significa que debería usar solo el Servicio. y en lugar de escribir todo esto en oncreate () escribiré dentro de onBind? Solo límpiame - Jyosna

Supongo que varios clientes pueden utilizar su servicio simultáneamente. así que enlazar con el servicio iniciado es mejor que iniciar otro. - Shailendra Singh Rajawat

para vincular el servicio que tengo que dar, bindService (intent, mConnection, Context.BIND_AUTO_CREATE); ¿Cuál es el uso de mConnection aquí? - Jyosna

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.