2017-10-29 83 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