如何在android中优化许多动态视图?

时间:2016-01-27 22:26:02

标签: android loops layout-inflater

我正在为日历编程,该日历显示4年365天(超过1400个视图),其中每天都包含一个LinearLayout,其中包含日期的文本和背景颜色。

在logcat中,我收到内存泄漏和活动正在做太多工作的消息。目前我以编程方式生成LinearLayouts id循环。我该如何优化内存?使用Inflater的视图?将所有视图放在硬编码的XML中?获取对象的实例并修改它?或者什么?

我目前的代码:

LinearLayout item=null;
while (year<2020){
month=0;
while (month<12){
day=1;
while (day<365){
    item=new LinearLayout(this);
    item.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
    //item.setTag(current date);
    myCalendarView.addView(item);
    day=day+1;

}
 month=month+1;
}
year=year+1;
}

1 个答案:

答案 0 :(得分:0)

您可能不需要在屏幕上一次显示1400个线性布局。因此,只创建屏幕上显示的视图,并回收从屏幕上消失的视图。

如果您希望用户输入特定日期的数据,并保存/加载该数据,您将需要某种数据模型,如数据库。