我需要創建動態佈局(即根本不使用xml)。在移動設備上,服務api將提供jsons。這些jsons將保持佈局模式或設計動態繪製。 這些佈局jsons將corespond我們需要顯示不同的模板。它可以超過150個模板。 請在下面找到一個樣本模板: -動態視圖創建性能問題
Template.json
{
"data": {
"layouts": [
{
"layoutId": 0,
"width": "34%",
"selectedbackgroundcolor": "#96F2CD",
"gradient": true,
"backgroundcolor": "#afeeb9",
"gradientcolors": [
"#afeeb9",
"#f3f6f7"
],
"strokewidth": 1,
"strokecolor": "#7bad51",
"children": [
{
"children": [
{
"backgroundcolor": "#3074c6",
"type": "label",
"field": "textfield1",
"fontsize": 14,
"textcolor": "#FFFFFF",
"alignment": "right",
"width": 242,
"singleline": true,
"topmargin": 10,
"rightmargin": 10,
"rightpadding": 10,
"bottompadding": 5,
"toppadding": 5
},
{
"backgroundcolor": "#3074c6",
"type": "label",
"text": "textfield: #",
"dependonfield": "textfield1",
"fontsize": 14,
"topmargin": 10,
"textcolor": "#FFFFFF",
"alignment": "right",
"width": 95,
"singleline": true,
"leftpadding": 10,
"bottompadding": 5,
"toppadding": 5,
"leftmargin": 10
}
]
},
{
"children": [
{
"type": "label",
"field": "FormattedClosedDate",
"fontsize": 14,
"textcolor": "#000000",
"alignment": "right",
"width": 90,
"topmargin": 5,
"singleline": true,
"rightmargin": 10
},
{
"type": "label",
"text": "Closed On: ",
"dependonfield": "FormattedClosedDate",
"fontsize": 14,
"topmargin": 5,
"textcolor": "#000000",
"alignment": "right",
"width": 100,
"singleline": true,
"leftmargin": 5,
"bold": true
}
]
},
{
"children": [
{
"type": "label",
"field": "Title",
"textcolor": "#000000",
"alignment": "left",
"fontsize": 17,
"bold": true,
"singleline": true,
"topmargin": 10,
"leftmargin": 10,
"rightmargin": 10
}
]
},
{
"children": [
{
"type": "label",
"field": "Summary",
"textcolor": "#7E957B",
"alignment": "left",
"fontsize": 14,
"leftmargin": 10,
"bottompadding": 20,
"maxline": 2,
"rightmargin": 10
}
]
}
]
}
]
},
"rcode": 100,
"msg": "Success"
}
我寫的這些模板的佈局解析器。我選擇Listview來動態膨脹從佈局分析返回的視圖。每個listview的行現在都擁有不同的佈局視圖或模板。 所以我不能使用視圖持有者模式來重用視圖的元素。由於視圖是動態創建的,因此視圖ID是動態創建的。
我在單個時間點顯示列表中的15個項目。我正在使用這個庫在一個時間點加載n個物品,共計x個物品--- https://github.com/chrisbanes/Android-PullToRefresh。
現在的問題是: -
內存泄漏,因爲我們沒有使用視圖持有人格局。
上下文用於創建它們與活動 生命週期耦合的新視圖。
- 在活動未被破壞之前,視圖不會被銷燬。
請爲我提供一個使用除Listview以外的替代解決方案或修改當前的方法。
查看持有者模式用於通過減少對findviewbyid的調用來減少充值列表項所需的時間,這是一項昂貴的操作。它不用於內存管理目的。ListView生成的元素只有在您滾動時纔會顯示更多視圖。所以內存管理所需要的是別的地方。請在應用程序崩潰時發佈日誌貓 –
我的公司政策也經常禁止我發佈代碼。最好寫一個單獨的(非常簡單的)例子來展示你的問題併發布。當你發佈你的「蒸餾」例子時,確保你告訴人們你正在做的是爲了防止「你爲什麼這樣做?」的不可避免的潮流。的問題。 – Martin
我會在星期一發佈一個示例代碼。 –