我創建了具有以下構造onCreateView()在
public CoordinatesPreference(Context context, AttributeSet attrs)
{
super(context, attrs);
setLayoutResource(R.layout.coordinates_preference);
}
自定義的偏好定製的偏好被稱爲太頻繁,我也已覆蓋onCreateView()
所以它寫入日誌是這樣的:
@Override
protected View onCreateView(ViewGroup parent)
{
Log.d("test", "Creating Preference view");
return super.onCreateView(parent);
}
和我的日誌充滿了"Creating Preference view"
消息,這創造了滾動的遲緩感覺,我相信轉換視圖應該解決這個問題,我看了一下首選項源代碼,如果轉換視圖爲空,則調用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
。但這並不能解決問題...
編輯2:我用Debug.StartMethodTracing()
,並發現,因爲我懷疑55%的時間花費(當我只是滾動上下)花費的通貨膨脹當convertView
爲空時從getView()
調用的方法onCreateView()
的偏好。
感謝,傑森
你可以粘貼你的喜好看起來像一個截圖嗎? – Macarse 2010-11-30 03:27:11
當然。當我回家後,我會發佈一個 – Jason 2010-11-30 06:19:36
你可以把你的preferences.xml文件?我對此有一個想法,我想確認您的配置與我的一樣。 – ThomasW 2011-05-18 13:27:20