provide - parent activity android
ConfiguraciĆ³n de launchMode="singleTask" vs setting activity launchMode="singleTop" (4)
Tengo una aplicación que es muy jerárquica (las actividades son similares a League> Team> Position> Player) y por eso he creado cada actividad singleTop
para mantener la navegación sensible y evitar instancias duplicadas.
Ahora estoy haciendo mi segunda aplicación y la he visto sugiriendo que declare que mi aplicación es singleTask
para evitar instancias duplicadas. ¿Podría alguien ayudar a explicar las ventajas de cada enfoque?
Mi nueva aplicación es solo una actividad con 3 fragmentos y luego probablemente agregue una actividad de configuración y tal vez una pregunta frecuente.
EDITAR: Me acabo de dar cuenta de que singleTask
NO está previniendo instancias duplicadas de mi aplicación, como había pensado. Ahora buscando la forma correcta de manejar esto ...
Android activity launchMode
4 modos ...
"estándar" "singleTop" "singleTask" "singleInstance"
El modo predeterminado es "estándar".
Los modos se dividen en dos grupos. estándar y singleTop viene en un lado y singleTask y singleInstance viene en otro lado.
La principal diferencia entre estándar y singleTop es estándar, cada vez que se intenta una actividad estándar, se crea una nueva instancia. En el caso de singleTop también, se crea una nueva instancia pero una instancia de la actividad ya está en la parte superior de la pila, no creará una nueva instancia.
De hecho, el problema surge cuando descargamos una aplicación de un servidor, la lanzamos y la abrimos desde allí. Después de iniciar la aplicación, presione el botón de inicio. Luego haga clic en todos los programas y seleccione el ícono de la aplicación desde la pantalla de inicio. Entonces se creará otra actividad en el caso de estándar, pero en singleTop, no se creará ninguna instancia nueva.
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. Está en la raíz de la pila de actividades, pero otras actividades (necesariamente las actividades "estándar" y "singleTop") pueden iniciarse en la misma 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.
http://smartandroidians.blogspot.in/2010/04/activity-launch-mode-in-android.html
Creo que su definición de singleTop y singleTask está un poco desajustada. SingleTop podría producir una instancia duplicada. Usemos su ejemplo, Liga> Equipo> Posición> Jugador. Si hay un botón en la pantalla del jugador que lo llevará a la pantalla de la liga, se convertirá en Liga> Equipo> Posición> Jugador> Liga.
Mientras que singleTask garantiza que solo puede existir una instancia de la actividad.
Desde el modo de inicio de Understanding Activity :
estándar (predeterminado): - Se pueden crear instancias de varias instancias de la clase de actividad y se pueden agregar varias instancias a la misma tarea o tareas diferentes. Este es el modo común para la mayoría de las actividades.
singleTop: la diferencia con el estándar es que si ya existe una instancia de la actividad en la parte superior de la tarea actual y el sistema enruta el intento a esta actividad, no se creará ninguna instancia nueva porque se activará un método onNewIntent () en lugar de crear un nuevo objeto
singleTask: - Siempre se creará una nueva tarea y se enviará una nueva instancia a la tarea como raíz. Sin embargo, si existe alguna instancia de actividad en alguna tarea, el sistema enruta el intento a esa instancia de actividad a través de la llamada al método onNewIntent (). En este modo, las instancias de actividad pueden ser empujadas a la misma tarea. Este modo es útil para actividades que actúan como puntos de entrada.
singleInstance: - Igual que singleTask, excepto que la instancia sin actividades se puede insertar en la misma tarea de singleInstance. En consecuencia, la actividad con el modo de lanzamiento siempre está en una sola tarea de instancia de actividad. Este es un modo muy especializado y solo debe usarse en aplicaciones que se implementan por completo como una sola actividad.
Encontré la respuesta aquí: http://www.intridea.com/blog/2011/6/16/android-understanding-activity-launchmode
"singleTop":
La diferencia con ''estándar'' es que si ya existe una instancia de actividad en la parte superior de la tarea actual y el sistema enruta la intención de esta actividad, no se creará ninguna instancia nueva porque lanzará un método onNewIntent () en lugar de crear un nuevo objeto. Tomemos la integración de Twitter-oauth como ejemplo.
"singleTask":
Siempre se creará una nueva tarea y una nueva instancia se enviará a la tarea como la raíz. Sin embargo, si existe alguna instancia de actividad en alguna tarea, el sistema enruta el intento a esa instancia de actividad a través de la llamada al método onNewIntent (). En este modo, las instancias de actividad pueden ser empujadas a la misma tarea. Y si el usuario hace clic en la tecla ATRÁS de la actividad singleTask, el sistema devolverá al usuario a la actividad anterior.