我正在嘗試改進列表視圖渲染性能並調查現在的微調。 (我們使用viewHolder,獲取圖像異步,暫停滾動圖像顯示,禁用滾動緩存已經)具有可見性元素的膨脹佈局的性能影響
現在我正在檢查佈局,並遇到單個列表項的佈局,如下所示的getView中充氣膨脹。
getView()自定義列表適配器
if (convertView == null) {
convertView = inflater.inflate(R.layout.zzz_list_item, null);
...save stuff in holder etc.
zzz_list_item.xml
<LinearLayout
android:id="@+id/layout_success"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/base"
android:orientation="vertical"
android:paddingBottom="30dp" >
...many lines of a "success" item layout
</LinearLayout>
<LinearLayout
android:id="@+id/layout_failure"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:visibility="gone" >
...many lines for a failure item layout
</LinearLayout>
能見度獲取我們的自定義列表視圖適配器的getView方法進一步下行控制
getView()方法 - 執行e非常時期
if(isSuccessfulItem){
((LinearLayout) convertView.findViewById(R.id.layout_failure)).setVisibility(View.GONE);
((LinearLayout) convertView.findViewById(R.id.layout_success)).setVisibility(View.VISIBLE);
} else {
((LinearLayout) convertView.findViewById(R.id.layout_failure)).setVisibility(View.VISIBLE);
((LinearLayout) convertView.findViewById(R.id.layout_success)).setVisibility(View.GONE);
}
雖然這也可能是一個小的性能豬(getView是昂貴的),我不知道它會是有意義的重構和分割成功和失敗的元素處理成兩個不同的佈局,這將然後分別使用getViewTypeCount()
和getItemViewType(int position)
進行充氣。
即使在通貨膨脹期間設置爲visibility = GONE,我的列表項目佈局的附加失敗佈局代碼(因此文件大小是否增加)是否會影響性能?
任何見解將不勝感激,謝謝。
感謝您的見解 - 那正是我想知道的。我們正在應用程序中遇到一些內存問題,因此清理這些視圖可能會有助於使應用程序更輕。我知道指定根節點的膨脹,我們正在使用持有者模式,但無論如何,感謝提示! – Makibo 2013-07-11 06:32:41