Android addView en hilo de fondo
Necesito agregar muchas vistas en un bucle, mientras que este fragmento lo hace, la aplicación también tendrá un cajón de navegación y barra de acción donde el usuario puede hacer cosas.
Por lo que me gustaría que este proceso no a) ralentizar la aplicación mediante el bloqueo del usuario, b) preferiblemente agregar las vistas en un hilo de fondo.
- Split motion events - acepta entradas simultáneamente a varias vistas
- ¿Cómo puede detectar la vista que está pasando cuando realiza un evento táctil?
- Animación individual - vistas múltiples
- Cómo agregar dos campos de texto de edición o vistas en un cuadro AlertDialog?
- Android: cómo crear una aplicación de pestañas compleja con vistas
El dilema es que pienso que androide no tiene gusto de las opiniónes ser agregado en un hilo de la no-UI, así que hay una mejor práctica para esto? Planeo tener un objeto de vista de barra de progreso visible en la vista del fragmento mientras que el resto de las vistas se están generando con el addView y los cálculos asociados
- ¿Cómo posiciono el cuadro de diálogo personalizado en coordenadas específicas?
- ¿Cómo mover una vista en Android?
- Añadir más de dos vistas a ViewSwitcher
- Android instanceof detectar todos los widgets?
- Deshabilitar todas las vistas secundarias dentro del diseño
- Notificación de pantalla de bloqueo de Android Vista personalizada con ripple y doble toque
- Adición de vistas a un grupo de vistas de Android mediante programación
- Stackoverflow error en la vista
En lugar de agregar vista en un subproceso de fondo, puede distribuir el trabajo publicando varios Runnables
en el subproceso de UI. El código de abajo es una versión altamente simplificada de esa técnica, pero es similar a cómo se hizo en la aplicación de Android Launcher:
private void createAndAddViews(int count} { for (int i = 0; i < count; i++) { // create new views and add them } } Runnable r = new Runnable() { public void run() { createAndAddViews(4); // add 4 views if (mMoreViewsToAdd) mTopLevelView.post(this); } }; mTopLevelView.post(r);