1 votos

¿Por qué funciona un atajo de SyncMe "una vez"?

Estoy tratando de ejecutar SyncMe sólo cuando la computadora se le puede enviar un ping. Desde la aplicación actualmente no es capaz de trabajar de esta forma, estoy usando Tasker y su AutoShortcut plugin. SyncMe expone una intención/acceso directo que permite ejecutar todos los trabajos de sincronización para un determinado equipo. Tasker luego fue configurado para ejecutar este tipo de método abreviado bajo ciertas condiciones, y cada dos minutos.

El problema es que el acceso directo sólo se ejecutará "una vez", las llamadas para el acceso directo no ejecutar la sincronización. Esto sucede no sólo desde dentro de Tasker, pero también al agregar el acceso directo a la pantalla de inicio. Al tocar el icono por primera vez, la interfaz de usuario muestra y la sincronización se ejecuta correctamente. Pero si presiono el botón de inicio y pulsa otra vez, sólo volver a la interfaz de usuario, sin ninguna acción tomada.

La única manera de que yo pueda averiguar para hacer el acceso directo de ejecutar de nuevo fue de alguna manera el "cierre" de la aplicación, por ejemplo ir a la pantalla de inicio con el botón de atrás o la eliminación de SyncMe de aplicaciones recientes, ninguno de los cuales parece posible desde dentro de Tasker, creo que requiere del rooting.

Nota: esta es una versión revisada de la pregunta, después de comprobar que el problema es reproducible fuera de Tasker, por iniciar el acceso directo desde la pantalla de inicio. Supongo que se ha convertido en una programación de la pregunta, lo siento.

0voto

Andy Brudtkuhl Puntos 1714

Android le da a las actividades de un ajuste llamado" launchMode, lo que les permite controlar cómo y cuando se está en marcha. Con algunos valores de launchMode, comenzando de nuevo la misma actividad con la intención de no iniciar una nueva actividad: en su lugar, voy a entregar el nuevo intento para la actividad existente. Esto puede suceder solamente si la actividad es el primer plano de la actividad, o si es en cualquier lugar del actual de la tarea (es decir, si usted puede conseguir a esa actividad mediante la presión de la espalda en varias ocasiones).

Es muy común que la aplicación de los autores establecer launchMode a resolver algunos tipos de programación o problema de interfaz de usuario, tales como la concurrencia de los problemas que surgen de tener dos instancias de la misma actividad que ejecuta a la vez, una en primer plano y una en el fondo. Cuando hacen esto, no siempre recuerde escribir el código para manejar la nueva intención de la actividad es enviado por Android: la actividad recibe de la intención de una manera diferente a cuando se lanzó por primera vez.

Es difícil saber sin saber más acerca de esta aplicación, pero desde el comportamiento que usted describe, suena como SyncMe ha caído en esta trampa. Usted debe decirle al programador lo que estamos tratando de lograr, y les pedimos a solucionarlo.

0voto

Renato Silva Puntos 323

Home acceso directo de la pantalla

Creemos que es un bug de Android. De hecho, como he podido confirmar en una compilación personalizada, añadiendo FLAG_ACTIVITY_SINGLE_TOP solucionado el problema para el hogar accesos directos de la pantalla, a pesar de su documentación, indicando bastante la frente, como a continuación. Nos encontramos con los docs muy mal escrito, por lo menos. Según el desarrollador, esta revisión se va a trabajar como siempre y como principal actividad de aplicación queda en la parte superior (es decir, la edición de un trabajo de sincronización, a continuación, presionar el botón para pulsar el icono de nuevo, no va a funcionar).

Si se establece, la actividad no se llevará a cabo si ya se está ejecutando en la parte superior de la historia de la pila.

Tasker y AutoShortcut

Por alguna razón, la revisión anterior no funciona en AutoShortcut. No sé cómo es diferente la intención enviada por este plugin es, a partir de la pantalla de inicio accesos directos. De cualquier manera, he reportado el problema a los desarrolladores. Independientemente, también me acaba de configurar una intención directa de configuración en Tasker, en lugar de utilizar AutoShortcut, de la siguiente manera:

  • Acción: com.bv.wifisync.run
  • Extra: itemId:<id> (ver abajo)
  • Paquete: com.bv.wifisync
  • Clase: com.bv.wifisync.Hosts
  • Objetivo: Activity

Usted tiene que reemplazar <id> con el número real de la tarea que desea ejecutar. En mi caso, 1 puntos para mi equipo, lo que significa que va a ejecutar todos sus trabajos. Conocer el número real parece igual, a contar desde la parte superior a la inferior, pero en caso de que esto no funciona, he aquí cómo lo he encontrado (SDK de Android, grep requerido en el escritorio):

  1. Habilitar el modo de depuración en el teléfono.
  2. Conectar el teléfono al USB del ordenador.
  3. Ejecutar adb logcat > temp.log.
  4. Inicio SyncMe.
  5. Cancelar el comando ADB.
  6. Ejecutar grep "Validated job" temp.log, esto debería mostrar la id.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X