es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El gestor de trabajo periódico no funciona cuando se cierra la aplicación.

Estoy intentando enviar mensajes sin conexión al servidor cuando se cierra la aplicación, para esto he implementado el work manager periódico pero no está funcionando cuando la aplicación se cierra incluso después de 15 minutos.

“`public class MainActivity extends AppCompatActivity {
public static final String NOTIFICATION_CHANNEL_ID = "10001" ;
private final static String default_notification_channel_id = "default" ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Constraints constraints =new Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)// hay más restricciones que se pueden establecer
.build();
Log.d("dsfdsf","dsfsdfdsfdsfdsfdf");
//crear solicitud única
Data inputData = new Data.Builder()
.putString("WORKER", "app")
.build();

final PeriodicWorkRequest myWorkRequest = new PeriodicWorkRequest.Builder(WorkService.class,1, TimeUnit.MINUTES)
.setInputData(inputData)
.setConstraints(constraints)
.build();
WorkManager workManager = WorkManager.getInstance(getApplicationContext());
workManager.enqueue(myWorkRequest);

}
}“`

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Basándonos en el fragmento de código proporcionado, parece que se está creando y encolando con éxito PeriodicWorkRequest sin errores. Sin embargo, es importante tener en cuenta que Work Manager no garantiza que el trabajo se ejecute exactamente en el momento programado o incluso dentro de un marco de tiempo específico.

    Cuando se cierra o elimina la aplicación de la lista de aplicaciones recientes, todo el trabajo en segundo plano, como las alarmas y los servicios, también se elimina. Esto significa que Work Manager puede no ser capaz de ejecutar la tarea en el intervalo especificado.

    Una posible solución para enviar mensajes sin conexión al servidor cuando se cierra la aplicación es utilizar Firebase Cloud Messaging (FCM). FCM proporciona una forma confiable y eficiente en términos de energía para enviar mensajes y notificaciones a los dispositivos incluso cuando la aplicación no se está ejecutando. Podría enviar los mensajes sin conexión al servidor usando FCM y luego escuchar estos mensajes cuando se abra la aplicación de nuevo.

    Alternativamente, podría utilizar un servicio en primer plano para realizar la tarea deseada incluso cuando se cierre la aplicación. Sin embargo, los servicios en primer plano requieren que se muestre una notificación persistente al usuario, lo cual puede no ser deseable en todos los casos.

Comments are closed.