Android 如果视图被回收,毕加索理解不加载是绝对正确的吗?

Android 如果视图被回收,毕加索理解不加载是绝对正确的吗?,android,lazy-loading,picasso,async-loading,Android,Lazy Loading,Picasso,Async Loading,我有点困惑:通常在Android、iOS或其他平台上抽象地将图像异步加载到某种列表视图时,您必须这样做 -- make a note of "which" cell this is (say, #213) -- start getting the image from the net. -- it has loaded from the net. What cell are we now? -- if we are "still" 213, load the image to the image

我有点困惑:通常在Android、iOS或其他平台上抽象地将图像异步加载到某种列表视图时,您必须这样做

-- make a note of "which" cell this is (say, #213)
-- start getting the image from the net.
-- it has loaded from the net. What cell are we now?
-- if we are "still" 213, load the image to the image view!
-- if we are "no longer" 213, just forget about it.
这是延迟加载异步映像的基本方法。例如,Lucas Rocha在这里的一篇著名文章中完美地解释了这一点:

向下滚动到这里,这里只是一个简单的草图,说明了一种方法:

现在,据我所知,毕加索实际上是完全自动地为你做这件事的

毕加索自己“知道”这种观点是否改变了。如果视图已更改,毕加索知道不必费心加载它

我完全正确吗?这是毕加索的一个内置功能,我不需要做其他事情吗

旁白——我有点困惑毕加索是如何做到这一点的;瞥了一眼,我在毕加索身上看不到任何魔法代码,在那里它可以记录身份证,或是持卡人的什么?看法有问题

我只是想说清楚,我正以通常的方式使用毕加索,就像这样,基本上是在getView的末尾

Picasso.
  with(State.mainContext).
  load(imageFile.getUrl()).
  placeholder(R.drawable.default).
  noFade().
  into(v.hexaIV);
是的,毕加索真漂亮。在getView方法Picasso.withc.loadurl.intoimg中只需要这一行

我不确定他们到底是怎么做到的,但在毕加索存在之前,我做了自己的图像加载器,这并不难

假设您的图像加载程序代码中有Url和ImageView的映射

因此,每当代码将img传递给它时,它都会检查此映射,如果它已经使用基本Java mImg.equalsimg为同一img加载了其他URL,如果它匹配,它知道,即使您仍将缓存该URL,它也不应该将可绘制的内容传递给ImageView

在一些罕见的情况下,您可能希望直接取消加载,在这些情况下,您可以调用Picasso.withc.cancelimg;,但这是很少有必要的。

是的,毕加索就是这么漂亮。在getView方法Picasso.withc.loadurl.intoimg中只需要这一行

我不确定他们到底是怎么做到的,但在毕加索存在之前,我做了自己的图像加载器,这并不难

假设您的图像加载程序代码中有Url和ImageView的映射

因此,每当代码将img传递给它时,它都会检查此映射,如果它已经使用基本Java mImg.equalsimg为同一img加载了其他URL,如果它匹配,它知道,即使您仍将缓存该URL,它也不应该将可绘制的内容传递给ImageView


在一些罕见的情况下,您可能希望直接取消加载,在这些情况下,您可以调用Picasso.withc.cancelimg;,但这很少有必要。

假设您使用的是毕加索的withcontext。loadhttp://i.imgur.com/DvpvklR.png.intoimageView; 要从适配器的getView加载映像。。。加载到同一个imageViewafter视图后,视图被重新使用,但尚未完成,将取消上一次下载。。。Piccaso对象有2个映射来存储ImageView或其他目标上正在进行的操作。。。targetToAction和TargetToDeferredRequestCreator假设您正在使用Picasso.withcontext。loadhttp://i.imgur.com/DvpvklR.png.intoimageView; 要从适配器的getView加载映像。。。加载到同一个imageViewafter视图后,视图被重新使用,但尚未完成,将取消上一次下载。。。Piccaso对象有2个映射来存储ImageView或其他目标上正在进行的操作。。。targetToAction和TargettoFerreedRequestCreator为伟大的答案赢得了一百万美元,@Budius!对不起,我不在,直到现在才开始。顺便说一句,这里有一个挑战性的问题,我的许多安卓专家朋友。。。非常感谢你的回答,@Budius!对不起,我不在,直到现在才开始。顺便说一句,这里有一个挑战性的问题,我的许多安卓专家朋友。。。