Added local Picasso instance instead of singleton

- MessagesActivity now constructs a new Picasso instance each onCreate
  and passes it to ListMessageAdapter
This commit is contained in:
Galen Abell
2018-11-10 15:14:17 -05:00
parent d8d9815d9b
commit ad5be385e8
2 changed files with 16 additions and 11 deletions

View File

@@ -21,12 +21,15 @@ import java.util.List;
public class ListMessageAdapter extends BaseAdapter {
private Context content;
private Picasso picasso;
private List<MessageWithImage> items;
private Delete delete;
ListMessageAdapter(Context context, List<MessageWithImage> items, Delete delete) {
ListMessageAdapter(
Context context, Picasso picasso, List<MessageWithImage> items, Delete delete) {
super();
this.content = context;
this.picasso = picasso;
this.items = items;
this.delete = delete;
}
@@ -62,8 +65,7 @@ public class ListMessageAdapter extends BaseAdapter {
final MessageWithImage message = items.get(position);
holder.message.setText(message.message.getMessage());
holder.title.setText(message.message.getTitle());
Picasso.get()
.load(message.image)
picasso.load(message.image)
.error(R.drawable.ic_alarm)
.placeholder(R.drawable.ic_placeholder)
.into(holder.image);

View File

@@ -98,6 +98,8 @@ public class MessagesActivity extends AppCompatActivity
private boolean isLoadMore = false;
private Integer selectAppIdOnDrawerClose = null;
private Picasso picasso;
// we need to keep the target references otherwise they get gc'ed before they can be called.
@SuppressWarnings("MismatchedQueryAndUpdateOfCollection")
private final List<Target> targetReferences = new ArrayList<>();
@@ -110,11 +112,7 @@ public class MessagesActivity extends AppCompatActivity
Log.i("Entering " + getClass().getSimpleName());
settings = new Settings(this);
try {
Picasso.setSingletonInstance(makePicasso());
} catch (IllegalStateException e) {
// ignore, singleton has already been set
}
picasso = makePicasso();
client =
ClientFactory.clientToken(settings.url(), settings.sslSettings(), settings.token());
@@ -126,7 +124,7 @@ public class MessagesActivity extends AppCompatActivity
messages = new MessageFacade(new MessageApi(client), appsHolder);
messagesView.setOnScrollListener(this);
messagesView.setAdapter(new ListMessageAdapter(this, emptyList(), this::delete));
messagesView.setAdapter(new ListMessageAdapter(this, picasso, emptyList(), this::delete));
swipeRefreshLayout.setOnRefreshListener(this::onRefresh);
drawer.addDrawerListener(
@@ -168,8 +166,7 @@ public class MessagesActivity extends AppCompatActivity
item.setCheckable(true);
Target t = Utils.toDrawable(getResources(), item::setIcon);
targetReferences.add(t);
Picasso.get()
.load(app.getImage())
picasso.load(app.getImage())
.error(R.drawable.ic_alarm)
.placeholder(R.drawable.ic_placeholder)
.resize(100, 100)
@@ -283,6 +280,12 @@ public class MessagesActivity extends AppCompatActivity
super.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
picasso.shutdown();
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {}