Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Dos servicios con el mismo filtro intención

Tengo dos aplicaciones instaladas en mi dispositivo, cada uno con un componente del servicio en él y estos dos servicios tiene la misma declaración del filtro de la intención, como esto:

<intent-filter> <action android:name="com.example.intent.action.SHOW"/> </intent-filter> 

Y comienzo el servicio de esta manera:

  • ¿Está disponible para establecer checkSelfPermission en SDK mínimo <23?
  • Problemas con SSL Proxy / Charles y Android
  • La clase java.util.Map tiene parámetros genéricos de tipo, utilice GenericTypeIndicator en su lugar
  • Ronda de Android en una imagen de fondo de Presentaciones, sólo las esquinas superior o inferior
  • Lista Intent.putExtra
  • El marcador del mapa de Google se reemplaza por el rectángulo delimitador en el zoom
  •  Intent intent = new Intent(); intent.setAction("com.example.intent.action.SHOW"); startService(intent); 

    Encontré que uno de estos dos servicios comenzó, pero no estoy seguro de cómo sucedió esto. Como sabemos, si escribimos dos actividades con la misma declaración del filtro de la intención, un diálogo será poped para arriba y dejó que el usuario elige una actividad para terminar La acción. ¿Qué me confunde es que cómo Android elige el servicio que se iniciará en estos que tiene los mismos filtros intención, ¿cuál es la estrategia de tomar esta decisión?

    ¡Gracias por adelantado!

    actualizar:
    Yury tiene razón, aquí hay un fragmento de código de frameworks / base / services / java / com / android / server / pm / PackageMangerService.java en ICS:

     public ResolveInfo resolveService(Intent intent, String resolvedType, int flags) { List<ResolveInfo> query = queryIntentServices(intent, resolvedType, flags); if (query != null) { if (query.size() >= 1) { // If there is more than one service with the same priority, // just arbitrarily pick the first one. return query.get(0); } } return null; } 

    Como podemos ver, si hay más de un servicio coincide con la intención solicitada, Android elegirá arbitrariamente uno para comenzar. Pero, el servicio que realmente se inicia es inesperado.

  • Android Layout hace que todos los niños no se puedan hacer clic
  • ¿Cómo saber cuando el RecyclerView ha terminado de colocar los artículos?
  • Necesito cambiar el color del trazo a un color definido por el usuario. Nada que ver con el estado
  • Cómo extraer el nombre de archivo de URI devuelto de Intent.ACTION_GET_CONTENT?
  • Configuración del color de fondo del tema de Android
  • ¿Tienes lenguaje en android?
  • 3 Solutions collect form web for “Dos servicios con el mismo filtro intención”

    Si hay más de un servicio con el mismo filtro de intenciones, el sistema operativo Android selecciona uno de estos servicios y le pasa la intención.

    Si hay más de 1 Servicio con Filtro de Intención coincidente, se seleccionará el que tenga mayor prioridad. Si hay varios servicios que tienen prioridad más alta – que un servicio "al azar" será escogido.

    Aquí está el pedazo de código que asegura que el primer artículo tiene prioridad más alta:

    https://github.com/android/platform_frameworks_base/blob/master/services/java/com/android/server/IntentResolver.java#L320

    ¿Es posible tener más de un servicio manejando una intención?

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.