Recargar actividad en Android

¿Es una buena práctica volver a cargar una Activity en Android ?

¿Cuál sería la mejor manera de hacerlo? this.finish y luego this.startActivity con la actividad Intent ?

Puedes simplemente usar

 finish(); startActivity(getIntent()); 

para actualizar una Activity desde dentro de sí mismo.

Esto es lo que hago para volver a cargar la actividad después de cambiar de regresar de un cambio de preferencia.

 @Override protected void onResume() { super.onResume(); this.onCreate(null); } 

Esto esencialmente causa que la actividad se vuelva a dibujar.

Actualizado: Una mejor forma de hacerlo es llamar al método recreate() . Esto causará que la actividad sea recreada.

para aquellos que no quieren ver ese parpadeo después del método recreate () simplemente utilicen

  finish(); overridePendingTransition(0, 0); startActivity(getIntent()); overridePendingTransition(0, 0); 

Necesitaba actualizar rápidamente una lista de mensajes en una de mis aplicaciones, así que realicé una actualización de mi actividad principal de UI antes de cerrar el diálogo en el que estaba. Estoy seguro de que hay mejores formas de lograr esto también.

 // Refresh main activity upon close of dialog box Intent refresh = new Intent(this, clsMainUIActivity.class); startActivity(refresh); this.finish(); // 

Android incluye un sistema de gestión de procesos que maneja la creación y destrucción de actividades que niega en gran medida cualquier beneficio que vería al reiniciar manualmente una actividad. Puede ver más información al respecto en Fundamentos de la aplicación

Sin embargo, lo que es una buena práctica es asegurarse de que sus métodos onPause y onStop liberen recursos a los que no necesita aferrarse y utilizarlos en LowMemory para reducir sus necesidades de actividades al mínimo absoluto.

Comience con un bash su misma activity y cierre la activity .

 Intent refresh = new Intent(this, Main.class); startActivity(refresh);//Start the same Activity finish(); //finish Activity. 

yo tengo el mismo problema

 import android.support.v4.content.IntentCompat; intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |IntentCompat.FLAG_ACTIVITY_CLEAR_TASK); 

este código funciona para mí Android api 17

en algunos casos, es la mejor práctica en otras, no es una buena idea que sea impulsada por el contexto si elige hacerlo; la siguiente es la mejor forma de pasar de una actividad a sus hijos:

  Intent i = new Intent(myCurrentActivityName.this,activityIWishToRun.class); startActivityForResult(i, GlobalDataStore.STATIC_INTEGER_VALUE); 

la cosa es que cuando terminas () de activityIWishToRun vuelves a tu actividad vital

Vi respuestas anteriores que se han dado para volver a cargar la actividad usando Intent. Esos funcionarán, pero también puede hacer lo mismo utilizando el método recreate () dado en la clase Activity.

En lugar de escribir esto

// Actualizar la actividad principal al cerrar el cuadro de diálogo

 Intent refresh = new Intent(this, clsMainUIActivity.class); startActivity(refresh); this.finish(); 

Esto se puede hacer escribiendo esto solo

 recreate(); 

No creo que sea una buena idea … sería mejor implementar un método más limpio. Por ejemplo, si su actividad tiene un formulario, el método de limpieza podría borrar cada widget en el formulario y eliminar todos los datos temporales. Supongo que eso es lo que quieres: restaurar la actividad a su estado inicial.

Después de experimentar con esto por un tiempo, no he encontrado consecuencias inesperadas al reiniciar una actividad. Además, creo que esto es muy similar a lo que hace Android de forma predeterminada cuando la orientación cambia, por lo que no veo una razón para no hacerlo en una circunstancia similar.

Tenía otro enfoque como: establecer el launchMode de mi actividad en singleTop y sin llamar a finish() , solo startActivity(getIntent()) hará el trabajo. Solo tiene que importar los datos nuevos en onCreate() y onNewIntent . Con la forma de Sush, la aplicación puede parpadear como dijo AMAN SINGH. Pero el enfoque de AMAN SINGH aún creará una nueva actividad que de alguna manera es innecesaria, incluso si él solucionó el problema del ‘parpadeo’, creo.

Demasiado tarde para esta pregunta, pero si alguien está buscando una solución, aquí está.

simplemente use

 this.recreate(); 

esto disparará el método onCreate en la actividad

En una actividad puede llamar a recreate() para “recrear” la actividad (API 11+)