什么可以使加载缓慢的android 4.1.X而不是4.2?
我正在使用UrlImageViewHelper为了加载适配器视图中的图片。
我的适配器是:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView==null){
convertView=new SquaredImageView(getContext());
}
SquaredImageView view= (SquaredImageView) convertView;
final long time=System.currentTimeMillis();
UrlImageViewHelper.setUrlDrawable(view,getItem(position).getLook_picture(),
R.drawable.placeholder_bkp, -1,new UrlImageViewCallback() {
@Override
public void onLoaded(ImageView imageView, Bitmap loadedBitmap,
String url, boolean loadedFromCache) {
Log.d(TAG,"time : "+ (System.currentTimeMillis()-time));
}
});
return view;
}
我正在下载并在全宽列表中显示大图片(620x620 jpg)。 第一次下载/显示时速度很慢。 升级到android 4.2后,这个问题不再发生。 在HTC上。
我试图分析这些调用,并且我相信在非常长的调用期间,它会挂起读取socket输入流。
有没有人知道为什么这两个平台之间的性能差距如此之大?
Logcat输出:(100 ms以下的时间通常是重复的)
android 4.1.2 Galaxy SIII mini
大多在1.5秒以上。 用户需要逐个滚动项目才能看到图片
在android 4.3 nexus 4上:
始终低于500毫秒,列表可用
这与在手机上运行的操作系统无关。 可能的原因和最可能的原因是设备上其他应用程序正在使用的RAM内存量。 出于测试目的,请尝试在运行程序不多的新设备上运行相同的代码。
(我不认为这个答案会带来赏金)
UrlImageViewHelper使用HttpURLConnection对服务图像的Web服务器进行http调用。 我们使用了HttpURLConnection(并且尝试了大部分其他类来完成http获取),我们发现它是通常片状的类(例如org.apache.http stuff等)中最不片的(特别是在Android 2.3上)。 有一次,我在我们的网络服务器上使用了一个协议分析器(tcpdump或tshark),发现ACK并没有及时回复,我想(这是一年前)我发现或多或少一样WiFi和小区数据(t-mobile GSM)。 我认为这些课程中存在低水平的问题,也许Dalvik本身存在问题。 再次,我不希望这个答案能够获得赏金,我也没有试图证明我的断言,我只是在叙述我在调查中得到了多大程度的类似问题。
上一篇: What could make the loading slow in android 4.1.X and not on 4.2?
下一篇: compare client device clock with server clock exactly upto milliseconds