每当我尝试这样做时,我的应用都会崩溃:
for (CalendarEvent event : this.ListofEvents){
String myDate = new String(event.getDate());
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
try {
theDate = format.parse(myDate);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(theDate.getDate());
}
如果我只是打印event.getDate()作为测试,它会显示所有日期。但是当我尝试格式化每个日期时,我假设它锁定了电话资源。这是一个包含很多条目的相当大的List。
也许有更好的方法来获取日,月和年而不占用所有资源。
答案 0 :(得分:2)
为什么要在循环中创建DateFormat?您创建它,使用它,然后在下一次迭代中它超出了GC的范围。
将它移到循环外:
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
format.setLenient(false);
for (CalendarEvent event : this.ListofEvents){
// what does event.getDate() return? A java.util.Date? If yes, why are you doing this at all?
String myDate = new String(event.getDate());
try {
theDate = format.parse(myDate);
System.out.println(theDate.getDate());
} catch (ParseException e) {
e.printStackTrace();
}
}