我正在为日历编程,该日历显示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;
}
答案 0 :(得分:0)
您可能不需要在屏幕上一次显示1400个线性布局。因此,只创建屏幕上显示的视图,并回收从屏幕上消失的视图。
如果您希望用户输入特定日期的数据,并保存/加载该数据,您将需要某种数据模型,如数据库。