Blankj / Blankj/AndroidUtilCode

SpanUtils.setClickSpan存在内存泄漏

Offen
#1,581 3 Kommentare 0 Reaktionen 1 zugewiesene Person Beansprucht von @Blankj Auf GitHub ansehen
bug
Vorherrschende Sprache
Java
Sterne
33.6k
Forks
10.6k
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

## 描述 Bug
SpanUtils.setClickSpan存在内存泄漏

## 相关代码
```java
public SpanUtils setClickSpan(@ColorInt final int color,
final boolean underlineText,
final View.OnClickListener listener) {
setMovementMethodIfNeed();
this.clickSpan = new ClickableSpan() {

@Override
public void updateDrawState(@NonNull TextPaint paint) {
paint.setColor(color);
paint.setUnderlineText(underlineText);
}

@Override
public void onClick(@NonNull View widget) {
if (listener != null) {
listener.onClick(widget);
}
}
};
return this;
}
```

## 修复代码 扩展`NoCopySpan`
```
public static class FixSpan extends ClickableSpan implements NoCopySpan {

@Override
public void onClick(@NonNull View widget) {

}

@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
}

}

public SpanUtils setClickSpan(@ColorInt final int color,
final boolean underlineText,
final View.OnClickListener listener) {
setMovementMethodIfNeed();
this.clickSpan = new FixSpan() {

@Override
public void updateDrawState(@NonNull TextPaint paint) {
paint.setColor(color);
paint.setUnderlineText(underlineText);
}

@Override
public void onClick(@NonNull View widget) {
if (listener != null) {
listener.onClick(widget);
}
}
};
return this;
}
```

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.