studio singletop single intent example desde change boton activity abrir android android-intent android-manifest flags

singletop - flags activity android



Cómo agregar banderas con mi intención en el archivo de manifiesto (4)

sabemos que hay indicadores que podemos agregar a nuestra intención utilizando el método addFlags () en nuestro código de Java. ¿Hay alguna manera de que podamos agregar estos indicadores en el archivo de manifiesto en lugar de escribir esto en código Java? Necesito agregar el indicador REORDER_TO_FRONT para una de mis actividades en el manifiesto.

¿Cómo lograr esto?


En el archivo de manifiesto, no puede agregar indicadores de Intent. Debe configurar el indicador en Intención, que pasará a startActivity. Aquí hay una muestra:

Intent intent = new Intent(this, ActivityNameToLaunch.class); intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); startActivity(intent);


Para responder a la pregunta original, ya que esta aparece como la primera respuesta en la búsqueda de Google, se puede hacer, ya que API nivel 3 (introducido en 2009) con agregar android:noHistory="true" a la definición de actividad en el archivo de manifiesto como descrito aquí: http://developer.android.com/guide/topics/manifest/activity-element.html#nohist .

ejemplo:

<activity android:name=".MainActivity" android:label="@string/app_name" android:noHistory="true"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.cataegory.LAUNCHER"/> </intent-filter> </activity>


Tuve un problema similar y quería establecer las banderas

Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK

para llevar la actividad siempre a la cima.

En este escenario, la solución es establecer el atributo

android:launchMode="singleInstance"

en el manifiesto

En general, hay muchos atributos en el manifiesto de Android para una actividad, y puede jugar con ellos para obtener efectos similares a los de las banderas.


Esto se puede lograr fácilmente con el uso de android:launchMode="singleTop" en el nodo <activity> del manifiesto, como este:

<activity android:name=".ui.activities.MainActivity" android:launchMode="singleTop"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>

Tenga en cuenta que android:launchMode="singleInstance" como lo indica @ jörg-eisfeld no es una opción recomendada para uso general, como se indica en la documentación oficial: https://developer.android.com/guide/topics/manifest /activity-element.html (mira la sección android: launchMode )