He instalado dos aplicaciones en el dispositivo, cada uno con un componente de servicio en ella y estos dos servicios tiene la misma declaración filtro de intención, como esto:servicio de dos con el mismo filtro intención
<intent-filter>
<action android:name="com.example.intent.action.SHOW"/>
</intent-filter>
y comienzo el servicio de esta manera:
Intent intent = new Intent();
intent.setAction("com.example.intent.action.SHOW");
startService(intent);
he encontrado que uno de estos dos servicios iniciados, pero no estoy seguro de cómo este happened.As sabemos, si escribimos dos actividades con la misma declaración filtro de intenciones, una el diálogo se activará y permitirá que el usuario elija una actividad para completar el acción. Lo que me confundió es que, como Android elige el servicio que se iniciará en estos que tienen los mismos filtros de intención, ¿cuál es la estrategia de tomar esta decisión?
¡Gracias de antemano!
actualización:
Yury está bien, aquí es el fragmento de código de marcos/base/servicios/java/com/android/servidor/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 que coincida con el intento solicitado, Android elegirá uno arbitrariamente para comenzar. Pero, qué servicio se iniciará realmente es inesperado.
probar por su proyecto own.Create, forman dos servicios con intent.You misma automáticamente verá lo que sucede. Así que pruébalo amigo – Sameer