Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Por qué se recomienda no retener el fragmento con la interfaz de usuario?

He leído que el fragmento de retención con ui y las referencias sobre las vistas pueden causar fugas de memoria. Que crear aplicación de prueba con el fragmento donde almacenar algunas referencias en las vistas y establecer setRetaineInstance (true), pero la rotación de varias pantallas no causa fugas. MAT dice que sólo tengo una instancia de actividad de los padres. ¿Qué estoy haciendo mal? ¿En qué casos el fragmento de retención con ui puede provocar fugas?

RetainInstanceActivity.java

public class RetainInstanceActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() .add(android.R.id.content, RetainFragment.newInstance()) .commit(); } }} 

RetainFragment.java

 public class RetainFragment extends Fragment { private View mLogin; private View mPassword; private View ImageView; public static RetainFragment newInstance() { final RetainFragment fragment = new RetainFragment(); return fragment; } @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRetainInstance(true); } @Override public View onCreateView(final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) { final View view = inflater.inflate(R.layout.fragment_retain, container, false); mLogin = view.findViewById(R.id.login); mPassword = view.findViewById(R.id.password); ImageView = view.findViewById(R.id.img); return view; } 

}

  • Límite de tamaño de Android montón, todavía tenemos necesidad de diseñar aplicaciones con un límite de 16 MB en mente?
  • ¿Cuál es el uso de MemoryFile en android
  • Agregar una ScrollView simple a la Galería provoca una pérdida de memoria
  • Detección de fugas de memoria nativas en el código JNI de Android
  • Android - recuperarse de una condición de memoria baja
  • Tipos de memoria de Android (RAM v Memoria interna)
  • Android Simulator: Fácil manera de simular un proceso de reinicio debido a la baja memoria?
  • No se pueden obtener asignaciones en Android 4.4.4
  • One Solution collect form web for “¿Por qué se recomienda no retener el fragmento con la interfaz de usuario?”

    Aquí se conservan referencias a las vistas mLogin, mPassword e ImageView de la antigua actividad, pero se sobrescriben justo después de la rotación, ya que se llamará onCreateView (), por lo que si su actividad es la actividad frontal y se produce un cambio en la configuración debería estar bien.

    Es posible que se ejecute en fugas de memoria cuando, si su actividad no es la actividad frontal, sin embargo, y en general, no puede saber cómo se maneja su fragmento.

    Por ejemplo, ViewPager tiene 2 adaptadores diferentes, uno ( http://developer.android.com/reference/android/support/v4/app/FragmentPagerAdapter.html ) está conservando las instancias de Fragment (sólo llamando onDestroyView ()), mientras que el ViewPager Otro (FragmentStatePagerAdapter) está destruyendo las instancias de fragmento.

    Por lo tanto, su fragmento perdería memoria significativa si se utiliza desde un FragmentPagerAdapter.

    Espero que esto sirva de ejemplo de posibles problemas. Si sabes lo que estás haciendo, no hay ningún problema al invocar setRetaineInstance (true) y no disponer las vistas.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.