gpt4 book ai didi

android - android函数内部泄漏 'setTextColor'

转载 作者:行者123 更新时间:2023-11-29 01:57:39 25 4
gpt4 key购买 nike

我开发了带有笔划文字的Button

import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint.Join;
import android.graphics.Paint.Style;
import android.text.TextPaint;
import android.util.AttributeSet;
import android.widget.Button;


public class ButtonStrokeText extends Button
{
private int strokeColor=Color.TRANSPARENT;
private int strokeWidth=2;

public ButtonStrokeText(Context context)
{
super(context);
}
public ButtonStrokeText(Context context, AttributeSet attrs)
{
super(context, attrs);
TypedArray a = context.obtainStyledAttributes(attrs,R.styleable.ButtonStrokeText);
strokeColor=a.getColor(R.styleable.ButtonStrokeText_textStrokeColor, strokeColor);
strokeWidth=a.getDimensionPixelSize(R.styleable.ButtonStrokeText_textStrokeWidth, strokeWidth);
a.recycle();
}
@Override
public void onDraw(Canvas canvas)
{
final ColorStateList textColor = getTextColors();

TextPaint paint = getPaint();

paint.setStyle(Style.STROKE);
paint.setStrokeJoin(Join.ROUND);
paint.setStrokeMiter(10);
setTextColor(strokeColor);
paint.setStrokeWidth(strokeWidth);

super.onDraw(canvas);
paint.setStyle(Style.FILL);

setTextColor(textColor);
super.onDraw(canvas);
}
}

但是 setTextColor(strokeColor) 里面有漏洞。如果我评论这条线路 Activity 没有泄露,否则我有泄露。

我的问题是,如何避免这种泄漏?

最佳答案

我认为您的问题出在实例化 ButtonStrokeText 时。在调用中使用 getApplicationContext() 而不是 this(Activity Context)。我可以看到 strokeColor 引用 aa 引用 context。 Activity 上下文可能会导致泄漏,因此请改用应用程序上下文。

关于android - android函数内部泄漏 'setTextColor',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14318152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com