2017-10-29 1 views
0

Zur Zeit habe ich etwas entlang der Linien dieserWie kann ich Picasso-Anfragen für eine bestimmte Ansicht abbrechen?

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); 
    } 
} 

Das Problem, das ich zur Zeit habe, ist die Sorge, dass ein Rennbedingungen zwischen setPictureToRed über und setPictureToLink

Wenn ich setPictureToLink(someLink) rufen und rufen Sie dann sofort setPictureToRed vor Picasso kann das Bild vollständig laden - ich fürchte, dass Picasso später zurückkommt und das rote Bild überschreibt (was ich nicht will)

Gibt es eine Möglichkeit, so etwas zu tun?

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

Antwort

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

'image = myFavPicture'? – AlanSTACK

+0

ja, ich bearbeite meine Antwort ... PLZ überprüfen, dass. Viel Glück .. –

+0

Warum brauche ich 'setImageDrawable (null)' wenn ich tun kann 'setImageResource (R.color.red)'? – AlanSTACK

Verwandte Themen