OnCreateView método se llama cuando? Y ¿Cuántas veces en el ciclo de vida de la actividad?

Escribí un pequeño programa que se parecía a esto:

package com.example.lifecycle; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.util.AttributeSet; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; public class LifeLogger extends Activity { private String TAG = this.getClass().getName().toString(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_life_logger); Log.d(TAG,"onCreate event"); } @Override protected void onResume() { super.onResume(); Log.d(TAG,"onResume event"); } @Override protected void onPause() { super.onPause(); Log.d(TAG,"onPause event"); } @Override protected void onStop() { super.onStop(); Log.d(TAG,"onStop event"); } @Override protected void onRestart() { super.onRestart(); Log.d(TAG,"onRestart event"); } @Override public View onCreateView(String name, Context context, AttributeSet attrs) { Log.d(TAG,"onCreateView event"); return super.onCreateView(name, context, attrs); } @Override protected void onStart() { super.onStart(); Log.d(TAG,"onStart event"); } @Override protected void onDestroy() { super.onDestroy(); Log.d(TAG,"onDestroy event"); } } 

Cuál es la actividad principal.

El LogCat es:

06-11 07: 07: 10.033: D / com.example.lifecycle.LifeLogger (600): evento onCreateView 06-11 07: 07: 10.033: D / com.example.lifecycle.LifeLogger (600): evento onCreateView 06- 11 07: 07: 10.043: D / com.example.lifecycle.LifeLogger (600): evento onCreateView 06-11 07: 07: 10.053: D / com.example.lifecycle.LifeLogger (600): evento onCreateView 06-11 07 : 07: 10.063: D / com.example.lifecycle.LifeLogger (600): evento onCreateView 06-11 07: 07: 10.063: D / com.example.lifecycle.LifeLogger (600): evento onCreateView 06-11 07:07 : 10.063: D / com.example.lifecycle.LifeLogger (600): evento onCreateView 06-11 07: 07: 10.063: D / com.example.lifecycle.LifeLogger (600): evento onCreateView 06-11 07: 07: 10.073 : D / com.example.lifecycle.LifeLogger (600): evento onCreateView 06-11 07: 07: 10.073: D / com.example.lifecycle.LifeLogger (600): evento onCreateView 06-11 07: 07: 10.083: D /com.example.lifecycle.LifeLogger (600): evento onCreateView 06-11 07: 07: 10.083: D / com.example.lifecycle.LifeLogger (600): evento onCreateView 06-11 07: 07: 10.083: D / com .example.lifecy Cle.LifeLogger (600): evento onCreateView 06-11 07: 07: 10.093: D / com.example.lifecycle.LifeLogger (600): evento onCreateView 06-11 07: 07: 10.093: D / com.example.lifecycle. LifeLogger (600): evento onCreateView 06-11 07: 07: 10.093: D / com.example.lifecycle.LifeLogger (600): evento onCreateView 06-11 07: 07: 10.103: D / com.example.lifecycle.LifeLogger 600): evento onCreateView 06-11 07: 07: 10.113: D / com.example.lifecycle.LifeLogger (600): evento onCreateView 06-11 07: 07: 10.113: D / com.example.lifecycle.LifeLogger (600) : Evento onCreateView 06-11 07: 07: 10.113: D / com.example.lifecycle.LifeLogger (600): evento onCreate 06-11 07: 07: 10.113: D / com.example.lifecycle.LifeLogger (600): onStart Evento 06-11 07: 07: 10.113: D / com.example.lifecycle.LifeLogger (600): onResume evento 06-11 07: 07: 10.193: D / com.example.lifecycle.LifeLogger (600): evento onCreateView 06 -11 07: 07: 10.223: D / gralloc_goldfish (600): Emulador sin emulación de GPU detectada. 06-11 07: 08: 19.633: D / com.example.lifecycle.LifeLogger (600): onPause evento 06-11 07: 08: 20.213: D / com.example.lifecycle.LifeLogger (600): evento onStop 06- 11 07: 08: 31.993: D / com.example.lifecycle.LifeLogger (600): evento onRestart 06-11 07: 08: 31.993: D / com.example.lifecycle.LifeLogger (600): evento onStart 06-11 07 : 08: 31.993: D / com.example.lifecycle.LifeLogger (600): evento onResume 06-11 07: 08: 51.073: D / com.example.lifecycle.LifeLogger (600): evento onPause 06-11 07:08 : 52.963: D / com.example.lifecycle.LifeLogger (600): evento onStop 06-11 07: 08: 54.043: D / com.example.lifecycle.LifeLogger (600): evento onDestroy

¿Lo que pasó aquí? ¿Por qué onCreateView se llama tantas veces?

¿Cuál es el momento de onCreateView?

Gracias.

actualizar:

El xml inflado:

 <RelativeLayout 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" tools:context="${packageName}.${activityClass}" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> </RelativeLayout> 

El manifast:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.lifecycle" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.lifecycle.LifeLogger" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

Ejecutar en android api nivel 16

Ha extendido su clase con Activity . Eso significa que el ciclo de vida de su clase sería el siguiente.

Introduzca aquí la descripción de la imagen

Por lo tanto, onCreateView no es un método de ciclo de vida para la actividad. Es sólo un método de miembro que se utilizará para las tareas especificadas como se indica en el doc.

Implementación estándar de android.view.LayoutInflater.Factory.onCreateView utilizado al inflar con el LayoutInflater devuelto por getSystemService. Esta implementación no hace nada y es para aplicaciones pre-android.os.Build.VERSION_CODES.HONEYCOMB. Las aplicaciones más recientes deberían usar onCreateView (View, String, Context, AttributeSet).

Para confiar en la llamada de onCreateView () en una actividad es mala programación.

Si utilizas Fragment extendido a tu clase y has escrito el método onCreateView (), entonces se habrían llamado sólo dos veces después de tu onAttach () y onDestroyView () si todavía estás en el mismo fragmento.

Vea este diagrama.

Introduzca aquí la descripción de la imagen

Aquí, es un método de ciclo de vida de Fragmento.

Por lo tanto, usted está probando con suposiciones equivocadas. ¡Eso es todo!

Android Framework utiliza el mecanismo de la inyección de Dependencias Cuando el archivo de diseño es inflado. Creo que debido a este onCreateView se llama tantas veces.Formula para esto podría ser como a continuación

  • No de vista en formato xml == no de llamadas a onCreateView

Trate de eliminar setContentView y ver cuántas veces onCreateView se llama. Usted puede obtener algunas ideas en él.

onCreateView llamadas = número de vistas en el diseño (crear cada vista)

  • Fragmento onStop () se llama directamente después onStart () - ¿POR QUÉ?
  • El contenido de TextView se pierde después de cambiar la orientación de la pantalla
  • Android - tutorial de Bloc de notas - ciclo de vida - algunos trabajos realizados dos veces?
  • Ciclo de vida de la actividad de Android en Jelly Bean
  • OnRestart vs. OnResume - Cuestión del ciclo de vida de Android
  • Ciclo de vida y servicio de las aplicaciones de Android
  • ¿Registrar automáticamente eventos de ciclo de vida de Android mediante ActivityLifecycleCallbacks?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.