para - manual de programacion android pdf
Excluir actividad actual de tareas recientes (3)
Mi aplicación, que se ejecuta en segundo plano, en algún momento muestra actividad para interrumpir de manera intencional el flujo del usuario. Mi actividad inicia una nueva tarea, que aparece en las listas de "Tareas recientes" mientras está en primer plano . ¿Hay alguna forma de evitarlo? La configuración de android:excludeFromRecents
no funciona: la actividad ya no se presenta en "Tareas recientes" solo después de que se haya detenido.
Manifiesto se ve como:
<activity
android:name="com.example.recenttasks.MainActivity"
android:excludeFromRecents="true">
</activity>
y la actividad se inicia de esta manera:
@Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(context, MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
La clave que mencionaste es
aparece en las listas de "Tareas recientes" mientras está en primer plano
Creo que no puedes cambiar ese comportamiento. Acabo de probar en mi aplicación y pasa lo mismo. Si presiono el botón "tareas recientes" mientras tengo mi actividad en primer plano, aparece en la lista. En el momento en que me mudo a otra actividad oa la pantalla principal de mi teléfono, la actividad ya no aparece en la lista.
También probé esto en la aplicación DeskClock incorporada que viene con versiones recientes de Android y el mismo comportamiento está presente allí cuando se activa una nueva alarma. Tenga en cuenta que la actividad AlarmAlertFullscreen
de esa aplicación tiene los mismos parámetros que mencionó en su pregunta.
No estoy seguro de que pueda evitar esto o por qué tendría que hacerlo en primer lugar, ya que la actividad ya no aparece en la lista una vez que pierde el enfoque.
Usted está definido en el manifiesto que es suficiente, pero no viene.
ok..también agrega esta bandera a tu Intnet
e inicia la Actividad ..
intnet.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
¿Debería el usuario volver a él? (Es decir, si se muestra y el usuario hace clic en los últimos, ¿ha perdido la oportunidad de ver la actividad oculta o debería estar allí?)
Si no pueden volver a él de todos modos, la mejor acción sería finish()
la actividad en onPause()
. Esto significará que siempre y cuando haya usado android:excludeFromRecents
y android:noHistory="true"
, no habrá ningún elemento en los últimos arrepentimientos.
Sin embargo, si desea volver a la actividad de ''interrupción'' (pero no desea una entrada reciente), podría considerar continuar la actividad en onPause
, pero también registrar un indicador de preference
(algo como IS_INTERSTITIAL
). Sus otras actividades pueden verificar esta preferencia en onResume
y, si es true
, enviar una Intent
para reiniciar el Intersticial en su lugar: para el usuario simplemente aparecerá que están reanudando la aplicación en el mismo estado en que lo dejaron (intersticial)
Editar: Si la pantalla necesita permanecer (en lugar de volver a crear una instancia), puede ser posible utilizar un DialogFragment , aunque debe preocuparse por los cambios de configuración. Hay un truco que puedes probar (explicado en esta respuesta ):
Deje su etiqueta vacía Al usar android:label=""
se excluye su tarea reciente. sin embargo, este es un truco definitivo que puede producir resultados inconsistentes (como no lo he probado para estar seguro)