2011-02-10 23 views
5

Tengo un servicio que está haciendo un poco de personal de respaldo, entonces necesito comenzar una Actividad que muestre algunos resultados que procesó el Servicio. Pero existe la posibilidad de que la actividad se inicie muchas veces desde el servicio. Ahora, quiero comenzar esta actividad solo si ya no está activo.Verifique si la actividad se inició en el Servicio

¿Cuál es la posibilidad y cómo hacer esto? Y el código de muestra sería bueno si no te importa.

Gracias!

Respuesta

2

Debe cambiar el launchMode de su actividad al singleTask en el archivo androidManifest.xml.

El valor predeterminado para esta propiedad es standard, que permite que se ejecute cualquier cantidad de instancias.

actividades "singleTask" y "singleInstance" solo pueden comenzar una tarea. Siempre están en la raíz de la pila de actividades. Además, el dispositivo solo puede contener una instancia de la actividad a la vez, solo una de esas tareas. [...]

Los modos "singleTask" y "singleInstance" también difieren entre sí en un solo aspecto: una actividad "singleTask" permite que otras actividades formen parte de su tarea. Siempre está en la raíz de su tarea, pero otras actividades (necesariamente las actividades "estándar" y "singleTop") pueden iniciarse en esa tarea. Una actividad de "instancia única", por otro lado, no permite que otras actividades formen parte de su tarea. Es la única actividad en la tarea. Si comienza otra actividad, esa actividad se asigna a una tarea diferente, como si FLAG_ACTIVITY_NEW_TASK estuviera en el intento.

Mira la Android Developers' Guide para una explicación más detallada (la cita es de allí también)

<activity android:name=".activity.YourActivity" 
    android:launchMode="singleTask" 
    android:alwaysRetainTaskState="true" 
    android:clearTaskOnLaunch="false" 
    android:finishOnTaskLaunch="false"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 
Cuestiones relacionadas