Я сейчас немного борюсь. Я уже давно пишу базовое приложение для социальных сетей, и изображения загружаются медленно. Я использую Picasso для загрузки изображений из хранилища Firebase, и это довольно медленно.
Когда приложение запускается, посты, которые я загружал в просмотрщик, загружаются только при их прокрутке, но они загружаются относительно быстро. По мере того, как я делаю больше вещей, переключаю действия и т. Д., Мои изображения будут загружаться медленнее и медленнее, пока они не загрузятся, и я застряну с моим изображением-заполнителем.
Это не только просмотрщик, потому что у меня есть действие по настройке для отображения учетных данных пользователя, и я получаю то же медленное изображение загрузки. Вот некоторый код.
UserRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.hasChild("username")){
String Username = dataSnapshot.child("username").getValue().toString();
username.setText(Username);
}
if (dataSnapshot.hasChild("profileimage")){
String image = dataSnapshot.child("profileimage").getValue().toString();
Picasso.get().load(image).placeholder(R.drawable.user_circle2).into(profileImage);
}
}
Текст загружается мгновенно, независимо от активности пользователя в приложении, но изображения постоянно загружаются медленнее.
Пожалуйста, кто-нибудь может помочь или предложить альтернативный метод для быстрого отображения изображений, спасибо.
EDIT:
Спасибо от Дуга Стивенсона за то, что он сказал мне удалить слушателей, я бы сделал это так?
eventListener = UserRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.hasChild("username")){
String Username = dataSnapshot.child("username").getValue().toString();
username.setText(Username);
}
if (dataSnapshot.hasChild("profileimage")){
String image = dataSnapshot.child("profileimage").getValue().toString();
Picasso.get().load(image).placeholder(R.drawable.user_circle2).into(profileImage);
endListener();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private void endListener() {
UserRef.removeEventListener(eventListener);
}
UPDATE:
Я добавил удаленных слушателей в приложение.
Я отлаживал это на своем телефоне, и, конечно, я получал медленные изображения, как упомянуто ранее, я пробовал это на эмуляторе, хотя скорость загрузки изображений осталась прежней, и я мог переключаться между действиями и даже после того, как я сделал довольно Несколько вещей, изображения все загружались нормально, когда я вернулся к своим сообщениям. Есть идеи почему ???
Я также сейчас получаю следующее сообщение в logcat:
Запуск блокировки GC Alloc
05-07 19: 28: 20.493 15034-16164 / com.sender.hp.sender I / art: Развертка одновременных меток Alloc освободила 3 (72B) объекта AllocSpace, 0 (0B) объектов LOS, 3% свободных, 494 МБ / 510 МБ приостановлено 384us всего 32.059ms
05-07 19: 28: 20.493 15034-16164 / com.sender.hp.sender W / art: Throwing OutOfMemoryError "Не удалось выделить 48771084 байта с 16777216 свободных байтов и 17 МБ до OOM"
Теперь я думаю, что мои изображения поглощают память, вызывая медленное отображение изображений и объясняя, почему текст все еще может появляться легко, а изображения - нет. Я попытаюсь сжать изображения, прежде чем добавить их в базу данных.