android - onnewintent - ¿Utilizas el método onPostCreate()?
state android (10)
Según la documentación,
Se llama cuando se completa el inicio de la actividad (después de que se haya llamado a onStart () y onRestoreInstanceState (Bundle)). Las aplicaciones generalmente no implementarán este método; está pensado para que las clases del sistema realicen la inicialización final después de que se haya ejecutado el código de la aplicación.
Las clases derivadas deben llamar a la implementación de este método por parte de la súper clase. Si no lo hacen, se lanzará una excepción.
No se aconseja utilizar este método. Sin embargo, lo uso para modificar algunos elementos después de onCreate
. Veo que algunas personas lo usan para hacer algo entre onResume()
y se les aconseja que no lo hagan porque no pueden confiar en este método (debido a su mala documentación).
Entonces, ¿puedo usar los ajustes aquí (no depende en onResume
de onResume
)?
¿Alguna vez usas este método y cuándo / por qué?
Como se indica en la documentación, onPostCreate se destina principalmente al uso del marco. La pregunta es: ¿qué piensa hacer en onPostCreate () que no puede hacer en onCreate () o onResume () (es decir, qué significa exactamente "ajustar algunos elementos")?
No lo estoy usando, ya que no veo razón para hacerlo, todo lo que necesito hacer se puede hacer en onCreate o onResume. Sin embargo, Google lo usa en su TabActivity por ejemplo.
De acuerdo con el significado del nombre del evento ''Publicar'', siempre lo uso para verificar el tamaño de los elementos que se puede cambiar durante el onCreated, especialmente cuando los elementos o los diseños deben cambiarse después de rotar la pantalla.
Esta es una extensión de la segunda respuesta:
Imagine que está intentando implementar BaseActivity que no establece ningún diseño en el método OnCreate.
public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
Luego imagina que tienes otra actividad (amplía la actividad base) que establece un diseño:
public class MainActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
activity_main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/my_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
Entonces, la primera vez que puede usar su botón en BaseActivity es el método onPostCreate:
public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
Button btn = (Button) findViewById(R.id.myBtn); //this is the when you can initialise your button
}
}
¡Usar BaseActivity es una práctica común para hacer buenas aplicaciones!
Google usa onPostCreate () en su proyecto de ejemplo para Navigation Drawer. ActionBarDrawerToggle necesita sincronizarse después del cambio de orientación, digamos :)
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
Así que creo que onPostCreate () debería usarse solo en algunas situaciones específicas ...
Puede haber situaciones en las que necesite usarlo. especialmente con las nuevas APIs.
Un escenario que podría ser útil es durante el cambio de rotación o el estado de retorno a una actividad que tiene una barra de progreso dentro de la barra de acción. tendrá que configurarlo falso dentro de ella onPostCreate()
@Override
protected void onPostCreate(Bundle savedInstanceState)
{
super.onPostCreate(savedInstanceState);
setProgressBarIndeterminateVisibility(false);
}
Puede verificar la secuencia de ejecución en ActivityThread#performLaunchActivity
. Luego encontrará que onPostCreate()
es el método final del ciclo de vida que se ha ejecutado después de onCreate(),onStart(),OnRestoreInstanceState()
de una actividad. Y después de eso, onResume
será ejecutado.
Utilizo onPostCreate()
cuando necesito cambiar la vista programáticamente. Porque la llamada findViewById()
no funciona cuando lo uso en onCreate
.
Ya que ninguna de las respuestas hizo un punto en onRestoreInstanceState (Bundle), quiero hacer un punto aquí. Se llamará a este método, si una aplicación se elimina de la memoria a la fuerza y luego el usuario la inicia nuevamente. Para que podamos usar este método para mantener el estado de actividad, en caso de que el usuario haya eliminado previamente la aplicación de la memoria.
onPostCreate puede ser útil si está creando su propia extensión de actividad "super-class" con una funcionalidad que todas sus actividades deben compartir.
al utilizar onPostCreate como método de devolución de llamada de la subclase, onCreate notificará que toda la creación ha finalizado. Ejemplo: si tiene actividades que comparten el mismo diseño, puede usar onPostCreate para agregar onClickListeners, etc.
Si está anulando onPostCreate, es mejor hacer la llamada a super.onPostCreate al final de su implementación.
simplemente llamó después de onCreate, ya que mi programa no es muy complejo, funciona bien. Es útil hacer algo en común en la clase base después de que la clase secundaria haya inflado su diseño