2017-10-29 84 views
0

目前我有沿着这如何取消毕加索对特定视图的请求?

public class SomeActivity extends AppCompatActivity 
{ 
    public AppCompatImageView myFavPicture; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_some); 

     myFavPicture = (AppCompatImageView) findViewById(R.id.my_fav_picture); 
    } 

    public void setPictureToRed() 
    { 
     myFavPicture.setImageResource(R.color.red); 
    } 

    public void setPictureToLink(Uri link) 
    { 
     Picasso.with(this).load(link).into(myFavPicture); 
    } 
} 

我现在有问题的东西线是关于setPictureToRedsetPictureToLink

如果我打电话setPictureToLink(someLink)然后前立即拨打setPictureToRed间的竞争条件之一的忧虑毕加索可以完全加载图像 - 恐怕毕加索会稍后回来并覆盖红色图片(这不是我想要的)

是否有某种方法可以做到这样的事情?

public void setPictureToRed() 
{ 
    // flush all previous loads for "myFavPicture" to avoid race conditions 
    Picasso.with(this).flush(myFavPicture); 
    myFavPicture.setImageResource(R.color.red); 
} 

回答

1
Picasso.with(this).cancelRequest(myFavPicture); 
myFavPicture.setImageDrawable(null); 
myFavPicture.setImageResource(R.color.red); 
+0

'图像= myFavPicture'? – AlanSTACK

+0

是的,我编辑我的答案... plz检查。祝你好运.. – 2017-10-29 04:25:59

+0

为什么我需要'setImageDrawable(null)'当我可以做'setImageResource(R.color.red)'? – AlanSTACK