android – onCreateView()在自定义首选项中被频繁调用

前端之家收集整理的这篇文章主要介绍了android – onCreateView()在自定义首选项中被频繁调用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我创建了一个具有以下构造函数自定义首选项
public CoordinatesPreference(Context context,AttributeSet attrs)
{
    super(context,attrs);
    setLayoutResource(R.layout.coordinates_preference);
}

而且我有Overriden onCreateView(),所以它写这样的日志:

@Override
protected View onCreateView(ViewGroup parent)
{
    Log.d("test","Creating Preference view");
    return super.onCreateView(parent);
}

我的日志里充满了“创建偏好视图”消息,这样会产生一个拖动的滚动感觉,我相信转换视图应该是解决这个问题,我看了偏好的源代码,如果转换视图为空,那么onCreateView()叫做.

为了测试目的,我添加了这种方法

@Override
public View getView(View convertView,ViewGroup parent)
{
    if (convertView == null)
    {
        return super.getView(convertView,parent);
    }
    return super.getView(convertView,parent);
}

并设置了一个断点.我发现几乎总是我的转换视图是空的.因此它必须创造一个新的观点,为什么呢?并且如何改善这一点以避免滞后偏好屏幕?

编辑:改变了onCreate的方式,现在它的所有android我只是使用setLayoutResource.但这并不能解决问题

EDIT2:我已经使用了Debug.StartMethodTracing(),并发现我怀疑55%的时间花费(当我只是滚动上下滚动)是花费在通风的偏好从方法onCreateView()是当convertView为null时,从getView()调用.

谢谢,杰森

解决方法

我遇到这个问题,我跟踪到我的layout.xml文件和我的Preference子类onCreateView()方法中的布局.当我从preferences.xml中删除布局时,onCreateView()停止多次调用.

猜你在找的Android相关文章