2016-04-14 1 views
3

В Picasso.with(context) ..Почему в Picasso.with (контекст), Пикассо просит контекста?

public static Picasso with(Context context) { 
    if (singleton == null) { 
    synchronized (Picasso.class) { 
     if (singleton == null) { 
     singleton = new Builder(context).build(); 
     } 
    } 
    } 
    return singleton; 
} 

и строитель (контекст Context), как это

/** Start building a new {@link Picasso} instance. */ 
public Builder(Context context) { 
    if (context == null) { 
    throw new IllegalArgumentException("Context must not be null."); 
    } 
    this.context = context.getApplicationContext(); 
} 

Почему Пикассо даже не спросив контексте, когда это всегда setting context = context.getApplicationContext()?

ответ

3

Вы уже отправили свой ответ -

public Builder(Context context) { 
    if (context == null) { 
    throw new IllegalArgumentException("Context must not be null."); 
    } 
    this.context = context.getApplicationContext(); 
} 

Пикассо является библиотекой, а не приложение. При создании экземпляра Picasso, если вы не пройдете context, то как вы думаете, он получит application context? Для его работы требуется context, и это определенно должно быть предоставлено приложением, используя эту библиотеку.

+6

Оно также предотвращает утечка «Activity» (если это то, что вы передаете), переключившись на контекст приложения. –

+0

Большое спасибо @JakeWharton за ясность! –

2

Вам не нужно проходить контекст после создания Picasso экземпляра с помощью строителя

// create Picasso.Builder object 
    Picasso.Builder picassoBuilder = new Picasso.Builder(context); 

    // Picasso.Builder creates the Picasso object to do the actual requests 
    Picasso picasso = picassoBuilder.build(); 

    // instead of Picasso.with(Context context) you directly use this new custom Picasso object 

picasso 
    .load(UsageExampleListViewAdapter.eatFoodyImages[0]) 
    .into(imageView1); 

Для получения дополнительной информации вы можете прочитать больше об этом здесь: -

https://futurestud.io/blog/picasso-customizing-picasso-with-picasso-builder

Смежные вопросы