我使用AsyncTask从Internet下载图像。我在ViewPager中显示它们。
我使用instantiateItem
中的MyPagerAdapter
方法调用它:
downloader.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,imageView, url);
我的下载器看起来像:
protected Bitmap doInBackground(Object... params) {
//(...)
//downloading image using httpConnection and decoding it to bitmap using BitmapFactory
//(...)
Log.d("myApp", "returning");
start = System.currentTimeMillis();
return bitmap;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
long stop = System.currentTimeMillis();
long period = stop-start;
Log.d("myApp-trace","it took: "+period);
if (bitmap != null) {
imageView.setImageBitmap(bitmap);
}
}
问题是,从doInBackground撤回到输入onPostExecute之间需要大约2000毫秒。
奇怪的是,当我稍后滑动ViewPager时(在加载第一张图像之后)它正常工作并需要大约0-5毫秒。
你有什么想法可以引起什么?
答案 0 :(得分:0)
好的,我找到了解决方案。问题出现在Fragments中 - 当我用ViewPager开始新活动时,花了很多时间来保存旧片段的包(有许多对象的列表为Serializable)。我注意到通过查看DDMS方法分析。没有我自己的方法,所以我认为它可能是碎片操作的东西。