Cómo cambiar el orden de la actividad en la pila de tareas actual
Este ejemplo demuestra cómo cambiar el orden de las actividades existentes en la pila de tareas actual configurando la etiqueta del objeto Intent.
1. Descripción de la marca de inicio de Actividad del objeto Intent:
FLAG_ACTIVITY_BROUGHT_TO_FRONT:
Esta marca generalmente no se establece en el código de la aplicación, pero se proporciona. por el sistema a una sola tarea Configuración de actividad para el modo de inicio.
FLAG_ACTIVITY_CLEAR_TASK:
Si esta etiqueta se agrega al objeto Intent, cualquier tarea existente asociada con esta Actividad se borrará antes de que se inicie la Actividad. En otras palabras, la nueva Actividad se convertirá en la raíz de una tarea vacía y cualquier otra Actividad será destruida. Se utiliza junto con FLAG_ACTIVITY_NEW_TASK.
FLAG_ACTIVITY_CLEAR_TOP:
Si este indicador está configurado en el objeto Intent y la actividad que se va a iniciar ya se está ejecutando en la tarea actual, en lugar de crear una nueva instancia de esta actividad , Cierre todas las demás actividades encima de esta actividad en la pila y luego envíe el nuevo objeto Intent a la actividad existente (que está en la parte superior de la pila).
FLAG_ACTIVITY_CLEAR_WHEN_TASK_REST:
Si esta marca se establece para el objeto Intent, cuando se restablece la tarea, las actividades posteriores a este punto de marca en la pila de actividades de la tarea deben borrarse.
FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS:
Si este indicador está configurado para el objeto Intent, la nueva Actividad no se retendrá en la lista de Actividades lanzadas recientemente.
FLAG_ACTIVITY_FORWARD_RESULT:
Si este indicador está configurado para el objeto Intent y el objeto Intent se utiliza para iniciar una nueva actividad a partir de una actividad existente, entonces el objetivo de respuesta de la actividad existente es transferido a la nueva Actividad. La nueva Actividad obtenida de esta manera puede llamar al método setResult (int) y devolver el resultado a la Actividad original.
FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY:
Este indicador generalmente no está establecido por el código de la aplicación. Si la actividad se inicia desde el historial, el sistema establecerá este indicador.
FLAG_ACTIVITY_MULTIPLE_TASK:
No utilice este indicador a menos que implemente su propio iniciador de aplicaciones de nivel superior.
FLAG_ACTIVITY_NEW_TASK:
Si esta etiqueta se establece en el objeto Intent, esta Actividad se convertirá en el punto de partida de una nueva tarea en la pila del historial.
FLAG_ACTIVITY_NO_ANIMATION:
Si esta etiqueta se establece en el objeto Intent, evitará que el sistema cambie entre actividades.
FALG_ACTIVITY_NO_HISTORY:
Si este indicador se establece en el objeto Intent, la nueva actividad no se conservará en la pila del historial.
FLAG_ACTIVITY_NO_USER_ACTION:
Si este indicador se establece en el objeto Intent, bloqueará el onUserLeaveHint normal antes de que se suspenda la actividad recién iniciada en primer plano.
() devolución de llamada al método. Si un marcador telefónico o un programa de despertador usa esta etiqueta para iniciar la Actividad.
FLAG_ACTIVITY_PREVIOUS_IS_TOP:
Si este indicador está configurado para un objeto Intent y el objeto Intent se usa para iniciar una nueva Actividad a partir de una Actividad existente, la Actividad no se puede usar para aceptar A. nuevo objeto Intent enviado a la Actividad de nivel superior. Generalmente se cree que la Actividad que comenzó con esta etiqueta finalizará inmediatamente por sí sola.
FLAG_ACTIVITY_REORDER_TO_FRONT:
Si esta etiqueta se establece en el objeto Intent, hará que la Actividad existente en la pila del historial de tareas pase al primer plano.
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED:
Si este indicador se establece en el objeto Intent y la actividad se inicia en una nueva tarea, también se puede llevar a la parte superior de la pila de tareas existente. Luego se utilizará como puerta de entrada para iniciar la tarea.
FLAG_ACTIVITY_SINGLE_TOP:
Si este indicador está configurado para el objeto Intent, si la actividad que se va a iniciar ya se está ejecutando en la parte superior de la pila del historial, entonces la actividad no se iniciará. .
FLAG_ACTIVITY_TASK_ON_HOME:
Si esta etiqueta se establece en el objeto Intent, hará que la tarea recién iniciada se coloque encima de la tarea de actividad principal actual.
2. Código de muestra
2.1. Archivo de manifiesto de definición (AndroidManifest.xml)
lt;?xml version="1.0" encoding="utf-8 "?gt;
lt; xmlns manifiesto: android="/apk/res/android"
paquete="my.android.test"
android : versionCode="1"
android: versionName="1.0"gt;
lt; aplicación android: icon="@drawable/icon" android: label="@string/ app_name"gt;
lt; actividad android: name=".ReorderOnLaunch"
android: label="@string/app_name"gt;
lt; intent-filtergt;
lt;action android:name="android.intent.action.MAIN" /gt;
lt;category android:name="android.intent.category " .LAUNCHER" /gt;
lt; /intent-filtergt;
lt; /actividadgt
lt; " /gt;
lt;actividad android: nombre=".ReorderThree" /gt;
lt;actividad android: nombre=".ReorderFour" /gt;
lt;/applicationgt;
lt;uses-sdk android:minSdkVersion="9" /gt;\
lt;/manifestgt;
2.2 Definir recursos de cadena (strings.xml)
lt;?xml version="1.0" encoding="utf-8"?gt;
lt;resourcesgt;
lt;string name="hola"gt;Hola mundo, ReorderOnLaunch!lt;/stringgt;
lt;string name="app_name"gt;ReorderOnLaunchlt;/stringgt;
lt;string name="reorder_on_launch"gt;Esta es la primera de una secuencia de cuatro botones Actividades A en el cuarto.
rth usará el indicador Intent.FLAG_ACTIVITY_REORDER_TO_FRONT para llevar la segunda de las actividades al frente de la pila del historial. Después de eso, retroceder a través del historial debe comenzar con la segunda actividad de reordenamiento más reciente, luego la cuarta, la tercera y la tercera. finalmente el primero.lt;/stringgt;
lt;string name="reorder_launch_two"gt; Ir al segundolt;/stringgt;
lt;string name="reorder_two_text"gt ;Esta es la segunda de una secuencia de cuatro Actividades.lt;/stringgt;
lt;string name="reorder_launch_tres"gt;Ir a la terceralt;/stringgt;
lt ;string name="reorder_tres_text"gt; Esta es la tercera de una secuencia de cuatro Actividades.lt;/stringgt;
lt;string name="reorder_launch_four"gt;Ir a la cuartalt;/stringgt;
lt; string name="reorder_four_text"gt; Esta es la última de una secuencia de cuatro Actividades.lt;/stringgt;
lt;string name="reorder_ second_to_front"gt; Traiga el segundo al frentelt;/stringgt;
lt;/resourcesgt;
2.3 Definir archivo de diseño
reorder_on_launch.xml
. lt;?xml version="1.0" encoding="utf-8"?gt;
lt;LinearLayout xmlns: android="/apk/res/android"
android: orientación="vertical"
android: padding="4dip"
android: gravitation="center_horizontal"
android: layout_width="match_parent"
android:layout_height="match_parent"gt;
lt;TextView
y
roid:layout_width="match_parent" android:layout_height="wrap_content"
android:layout_weight="0"
android:paddingBottom="4dip"
android : text="@string/reorder_on_launch"/gt;
lt; Botón android: id="@ id/reorder_launch_two"
android: layout_width="wrap_content" android: layout_height= "wrap_content"
android: text="@string/reorder_launch_two"gt;
lt;/Buttongt;
lt;/LinearLayoutgt;
reorder_two.xml
lt;?xml version="1.0" encoding="utf-8"?gt;
lt;LinearLayout xmlns: android="/apk/ res/android"
android: orientación="vertical"
android: padding="4dip"
android: gravedad="center_horizontal"
android: diseño_width="match_parent"
android: diseño_height="match_parent"gt;
lt;TextView
android: diseño_width="match_parent" android:layout_height="wrap_content"
android:layout_weight="0"
android:paddingBottom="4dip"
android:text="@string/ reorder_two_text"/gt;
lt;Botón android:id="@ id/reorder_launch_tres"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android: text="@string/reorder_launch_tres"gt;
lt;/Buttongt;
lt;/LinearLayoutgt;
reorder_tres.xml
lt;?xml version="1.0" encoding="utf-8"?gt;
lt;
nearLayout xmlns: android="/apk/res/android"
android: orientación="vertical"
android: padding="4dip"
android: gravedad="center_horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"gt;
lt;TextView
android:layout_width="match_parent"android:layout_height="wrap_content"
android:layout_weight="0"
android: paddingBottom="4dip"
android: text="@string/reorder_tres_text"/gt;
lt; Botón android: id="@ id/reorder_launch_four"
android: layout_width="wrap_content" android: layout_height="wrap_content"
android: text="@string/reorder_launch_four"gt;
lt;/Buttongt;
lt;/LinearLayoutgt; p>
p>
reorder_four.xml
lt;?xml version="1.0" encoding="utf-8"?gt;
lt;LinearLayout xmlns :android="/ apk/res/android"
android: orientación="vertical"
android: padding="4dip"
android: gravedad= "center_horizontal"
p>android: layout_width="match_parent"
android: layout_height="match_parent"gt;
lt;TextView
android:layout_width="match_parent"android:layout_height="wrap_content"
android:layout_weight="0"
android: paddingBottom="4dip"
android: text="@ string/reorder_four_text"/gt;
lt;Botón android:id="@ id/re
order_ second_to_front"
android: layout_width="wrap_content" android: layout_height="wrap_content"
android: text="@string/reorder_ second_to_front"gt;
lt ;/Buttongt;
lt;/LinearLayoutgt;
2.4 Crear actividad
ReorderOnLaunch.java
paquete my.android.test ;
importar android.app.Activity;
importar android.content.Intent;
importar android.os.Bundle;
importar android.view.View;
importar android.view.View.OnClickListener;
importar android.widget.Button;
publicclass ReorderOnLaunch extiende la actividad {
@Override
publicvoid onCreate(Bundle saveInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.reorder_on_launch
Botón dosButton = (Botón)findViewById(R.id.reorder_launch_two);
twoButton.setOnClickListener(mClickListener
}
);privatefinal OnClickListener mClickListener = new OnClickListener(){
publicvoid onClick(View v){
startActivity(new Intent(ReorderOnLaunch.this, ReorderTwo.class)); p> p>
}
};
}
ReorderTwo.java
paquete my.android.test;
importar android.app.Activity;
importar android.content.Intent;
importar android.os.Bundle;
importar android .view .View;
importar android.view.View.OnClickListener;
importar
android.widget.Button;
publicclass ReorderTwo extiende la actividad {
@Override
protectedvoid onCreate(Bundle saveState){
super. onCreate(saveState);
setContentView(R.layout.reorder_two);
Botón dosBotón = (Botón)findViewById(R.id.reorder_launch_tres); twoButton.setOnClickListener(mClickListener);
}
privatefinal OnClickListener mClickListener = new OnClickListener(){
publicvoid onClick(Ver v){
startActivity(new Intent(ReorderTwo.this, ReorderThree.class));
}
}
}
ReorderThree; .java
paquete my.android.test;
importar android.app.Activity;
importar android.content.Intent;
importar android.os.Bundle;
importar android.view.View;
importar android.view.View.OnClickListener;
importar android.widget. Botón;
publicclass ReorderThree extiende la actividad {
privatefinal OnClickListener mClickListener = new OnClickListener(){
publicvoid onClick(View v){
startActivity(new Intent(ReorderThree.this, ReorderFour.class));
}
}
@Override
protectedvoid; onCreate(Bundle saveState){
super.onCreate(saveState);
setContentView(R.layout.reorder_tres);
Botón dosBotón = (Botón)findViewByI
d(R.id.reorder_launch_four);
twoButton.setOnClickListener(mClickListener);
}
}
ReorderFour.java
paquete my.android.test;
importar android.app.Activity;
importar android.content.Intent;
importar android .os.Bundle;
importar android.view.View;
importar android.view.View.OnClickListener;
importar android.widget.Button;
publicclass ReorderFour extiende la actividad {
@Override
protectedvoid onCreate(Bundle saveState){
super.onCreate(saveState ); p>
p>
setContentView(R.layout.reorder_four);
Botón dosBotones = (Botón)findViewById(R.id.reorder_segundo_to_front);
dosBotones. setOnClickListener(mClickListener);
}
privatefinal OnClickListener mClickListener = new OnClickListener(){
publicvoid onClick(Ver v){
Intención intención = nueva Intención (ReorderFour.this, ReorderTwo.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
startActivity(intent); }
};
}