gpt4 book ai didi

Android 列表 Activity 显示内容的时间太长

转载 作者:行者123 更新时间:2023-11-29 17:54:38 24 4
gpt4 key购买 nike

我面临的问题是列表 Activity 加载时间过长。

我也知道这个延迟背后的原因,但不幸的是无法修复这个故障。

基本上我有一个 ListView ,它将显示基本上是一个 child 的列表

显示以下属性的人物对象(Name,Age,Sex)

Name : John Connor
Age : 10 years, 2 months, 11days
Sex : Male

为了将 child 的详细信息绑定(bind)到 ListView ,我使用了一个从

派生的 Binder 类

基础适配器。说 KidDataBinder。在 Binder 类的 getView 方法中我

执行文本绑定(bind)到 TextView(基本上这个内容是 list_row_item.xml 的一部分

布局)

当我想显示 child 的列表及其详细信息时,问题就出现了

他们的年龄(最新日期)。

即如果我今天加载 kids listactivity,条目应为

Name : John Connor
Age : 10 years, 2 months, 11days
Sex : Male
---------------------------------
Name : Sandra Mueller
Age : 11 years, 1 months, 2days
Sex : Female
.... so on

如果我在一天后阅读相同的 listactivity,它应该将年龄刷新为

Name : John Connor
Age : 10 years, 2 months, 12days
Sex : Male
---------------------------------
Name : Sandra Mueller
Age : 11 years, 1 months, 3days
Sex : Female
.... so on

注意:注意时代中日子的变化

为了实现这一点,我有一个实用方法,它基本上可以获取 child 的出生日期

并计算出他的最新年龄。

/* * 返回年龄 * 年月日格式 * */私有(private)字符串计算年龄(字符串 strdob){ 年龄; 字符串差异; 尝试{

    SimpleDateFormat custDateFormat = new SimpleDateFormat("MM/dd/yyyy");
Date dob = custDateFormat.parse(strdob);
Calendar today = Calendar.getInstance();
Calendar cd = Calendar.getInstance();
cd.setTime(dob);

int dateParts[] = {Calendar.MONTH,Calendar.DAY_OF_MONTH,Calendar.YEAR};
int diff[] = new int[3];
for(int i = 2; i >= 0; i--)
{
while(!custDateFormat.format(cd.getTime()).split("/")[i].equals(custDateFormat.format(today.getTime()).split("/")[i]))
{
cd.add(dateParts[i],1);
diff[i]++;
}
}

difference = ""+(diff[2]+" yrs : "+diff[0])+" months : "+diff[1]+" days";

}
catch(ParseException pex){
return "--";
}
catch(IllegalArgumentException iex){
return "--";
}
return difference;

}

所以这种方法可以帮助我获取 child 的最新年龄,但性能受到影响

相当大。最初,如果加载 child 列表所花费的时间是 10 毫秒。之后

包括计算最晚年龄的逻辑,延迟差不多3500ms!!!

这里发生的事情是每次getView获取当前的Kid对象它必须访问出生日期(dob)字段 ---> 调用传递 dob 的 calculateAge ---> 获取最新年龄 --> 最后设置属于 AGE

有没有办法在单独的 BaseAdapter 类中执行此计算部分

线程或其他东西,以便将这种延迟最小化。

感谢您的输入/回复

税务总局

最佳答案

您需要检查日期计算的逻辑。你可以查看this .它要求您包含一些实用程序类。或者你用下面的代码替换你的计算逻辑

GregorianCalendar d1 = new GregorianCalendar(1992, 8 - 1, 17);
GregorianCalendar d2 = new GregorianCalendar(2013, 6 - 1, 18);
d2.add(Calendar.YEAR, -d1.get(Calendar.YEAR));
d2.add(Calendar.MONTH, -d1.get(Calendar.MONTH));
d2.add(Calendar.DAY_OF_MONTH, -d1.get(Calendar.DAY_OF_MONTH) + 1);
int y = d2.get(Calendar.YEAR);
int m = d2.get(Calendar.MONTH);
int d = d2.get(Calendar.DAY_OF_MONTH) - 1;

关于Android 列表 Activity 显示内容的时间太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20347208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com