Spanish Como comunicarle al sistema operativo que la aplicación no esta bloqueada?

carlos7000

Well-Known Member
Licensed User
Longtime User
Tengo un programa en el que existe un proceso que requiere un considerable tiempo de ejecución. Debido a esto, el sistema operativo interpreta incorrectamente que la aplicación se ha bloqueado. En consecuencia, emite una notificación indicando que la aplicación parece estar bloqueada y se propone su finalización. Sin embargo, la situación no implica un bloqueo real, sino más bien un proceso ocupado en curso.

Me interesa saber si en B4A o B4X existe alguna solución para que la aplicación pueda comunicar al sistema operativo, en intervalos regulares mientras se lleva a cabo el proceso, que no se trata de un bloqueo, sino de una ocupación momentánea. Mi objetivo es mantener el sistema informado de la actividad continua de la aplicación. ¿Tienes conocimiento de algún código o método que permita lograr esto?

He empleado sleep(0) en el proceso, pero el aviso sigue apareciendo.

Se puede hacer algo mas?
 

josejad

Expert
Licensed User
Longtime User
Hola, sin mas datos es dificil decirte, pero los metodos asincronos con Wait For no producen bloqueos y la app debe seguir respondiendo.
 

Rubsanpe

Active Member
Licensed User
Para evitar que un proceso largo interfiera en la ejecución del Sistema Operativo y este te muestre un mensaje, puede insertar un sleep(0) en el código repetitivo y los bucles. Esto devuelve el control al Sistema Operativo para que ejecute otros procesos antes de seguir con tu código.

Rubén
 

drgottjr

Expert
Licensed User
Longtime User
como dice j.j.aguilar, sin mas datos es dificil ayudar.

es posible que un servicio te baste. mucho depende de lo que hace tu proceso.

"sleep" puede introducir complicaciones.

android tiene sus propias maneras de llegar a la conclusion que una app merece un "ANR".
"sleep" (que no quiere decir "dormir") podria ser interpretado como una tentativa de enganar
al sistema, pues, en este caso, cuando sleep vuelve, vuelve a un mismo estado que habia dejado.
y es precisamente este estado (de no hacer nada) que hace creer que la app esta bloqueada.

ese proceso largo tiene que ser traslado a otro hilo. el sistema quiere que todo lo relacionado con
el aporte del usuario tenga precendencia. cuando no occure nada en la llamada interfaz del usuario
(botones, vistas, la pantalla), el sistema o traslada la app al fondo o muestra el ANR. para que sepas,
hay ciertos servicios que siguen funcionando aunque la app haya terminado...
 
Top