Averigüe si la actividad actual será la raíz de la tarea eventualmente, después de que las actividades de acabado pendientes hayan desaparecido
Si FirstActivity
es la raíz de la tarea y se termina por sí mismo y lanza SecondActivity
, entonces llamando isTaskRoot()
en SecondActivity
inmediatamente devolverá false
, porque el FirstActivity
de FirstActivity
ocurre de forma asíncrona y, por lo tanto, no se realiza todavía. Esperando un segundo y luego llamando isTaskRoot()
devuelve true.
public class FirstActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); finish(); startActivity(new Intent(this, SecondActivity.class)); } }
public class SecondActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override protected void onResume() { super.onResume(); ((TextView)findViewById(R.id.tv1)) .setText("isTaskRoot() in onResume(): " + isTaskRoot()); new Handler().postDelayed(new Runnable() { @Override public void run() { ((TextView)findViewById(R.id.tv2)) .setText("isTaskRoot() after 1s: " + isTaskRoot()); } }, 1000); } }
- ¿Realmente necesito pasar alrededor de las instancias de contexto profundamente en la aplicación?
- Android: Hacer la superposición de Actionbar
- CalendarView: haga clic en Android
- ¿Cuál es la mejor manera de mantener el adaptador como una clase interna de actividad o fuera?
- ¿Por qué onDestroy inActivity A no se llama después de una llamada a finalizar () en ActivityB
¿Hay una manera de …
-
(De forma óptima) averiguar si la actividad será la raíz de la tarea con el tiempo , o,
-
(Mejor que nada) obtener algún tipo de notificación / devolución de llamada una vez que la tarea está en su estado "final" y por lo tanto
isTaskRoot()
devolverá la "verdad"?
- Problema al ordenar la pila de actividades al iniciar la aplicación desde el instalador de aplicaciones para Android y desde la pantalla de inicio
- ¿Cuál es el propósito de tener dos HitBuilders diferentes (Social y Evento)?
- Prueba de que el botón inicia una Actividad con Robolectric
- Cómo configurar la actividad en modo de pantalla completa en Android?
- El servicio se crea de nuevo después de onTaskRemoved
- ¿Cómo iniciar una actividad de Android cuando se inicia una aplicación PhoneGap?
- Android inicia actividad incorrecta
- Nuevo patrón de diseño de la actividad de Android Studio content_main.xml
He tenido un problema similar y quería control estricto sobre exactamente quién es la actividad de la raíz. En mi caso, la raíz sólo podría ser una de mis propias actividades (no de terceros), así que pude usar el siguiente enfoque:
He extendido la clase de Application
, he añadido una referencia débil a una actividad llamada currentRootActivity
y currentRootActivity
añadido getter y setter sincronizados.
Entonces yo manejé este estado por mí mismo cuando las actividades fueron creadas / destruidas. Mi caso de uso fue un poco especial porque estaba buscando para reemplazar una raíz con otra, así que sabía exactamente dónde reiniciar mi nueva variable de estado, pero estoy bastante seguro de que puede hacer lo mismo.
Incluso pude agregar esta lógica de estado en una clase base compartida para todas mis actividades. Así que esto no fue tan asqueroso como suena 🙂
Como se menciona en los comentarios, el método de actividad es isFinishing
también podría ser útil.
Tratar:
Intent intent = new Intent(this, SecondActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);
Espero que esto hará que SecondActivity sea la actividad raíz.
- Cómo agregar fecha en la base de datos sqlite
- Error de Android Studio: "La variable de entorno no apunta a una instalación de JVM válida"