Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

list场景下有内存泄露,会一直new SkinView,导致多次滑动之后占用的内存会一直增加

Abierto
#19 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
45/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
android, java

Línea de trabajo

Comienza en el método getView del adapter y sigue SkinManager.getInstance().injectSkin hasta getSkinView, centrándote en la creación resaltada de SkinView y en el manejo de la etiqueta de la vista. Repite el desplazamiento por la lista y, después, verifica que las instancias de SkinView no sigan aumentando con cada llamada a getView mientras la inyección de skins continúa funcionando para las filas recicladas.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(MainActivity.this).inflate(R.layout.item, parent, false);
}
SkinManager.getInstance().injectSkin(convertView);
TextView tv = (TextView) convertView.findViewById(R.id.id_tv_title);
tv.setText(getItem(position));
return convertView;
}

public static SkinView getSkinView(View view) {
Object tag = view.getTag(R.id.skin_tag_id);
if (tag == null)
{
tag = view.getTag();
}
if (tag == null) return null;
if (!(tag instanceof String)) return null;
String tagStr = (String) tag;

    List<SkinAttr> skinAttrs = parseTag(tagStr);
    if (!skinAttrs.isEmpty())
    {
        changeViewTag(view);
        **return new SkinView(view, skinAttrs);**
    }
    return null;
}

SkinManager.getInstance().injectSkin每次都会new一个SkinView出来,SkinView的总数量等于getView被调用的总次数,而不是getItemCount的值

Lenguaje dominante
Java
Estrellas
1.7k
Forks
364
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Aún no hemos revisado los archivos de configuración de este proyecto. Empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de hongyangAndroid/AndroidChangeSkin

Todos los issues de hongyangAndroid/AndroidChangeSkin

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.