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