我创建了一个具有以下构造函数的自定义首选项
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()调用.
谢谢,杰森