В настоящее время я занимаюсь разработкой простого приложения для социальных сетей, в котором используется Firebase. Пользователь получит фид постов, содержащих изображения, его изображение профиля будет отображаться в углу экрана и в настройке активности, которую я создал.
Приложение работает отлично, кроме OOM (Exception of Memory Exception). После нескольких минут переключения изображения перестают загружаться. Я считаю, что это вызвано утечками памяти в моем приложении. Я просмотрел профилировщик андроида, и он все время стабильно показывал мою память при каждой загрузке изображения.
Я застрял на этом довольно долго, и мне очень нужна помощь. Мое приложение не будет работать, если оно может отображать изображения только в течение короткого периода времени. Вот мой код, пожалуйста, кто-то может помочь:
private void DisplayUserPostsToLayout() {
final FirebaseRecyclerAdapter<postsGetInfo,postsGetInfoViewHolder> firebaseRecyclerAdapter =
new FirebaseRecyclerAdapter<postsGetInfo, postsGetInfoViewHolder>(postsGetInfo.class, R.layout.posts_layout,postsGetInfoViewHolder.class,postRef) {
@Override
protected void populateViewHolder(final postsGetInfoViewHolder viewHolder, postsGetInfo model, int position) {
final String postKey = getRef(position).getKey();
viewHolder.setUsername(model.getUsername());
viewHolder.setTime(model.getTime());
viewHolder.setDate(model.getDate());
viewHolder.setDescription(model.getDescription());
viewHolder.setProfileImage(model.getProfileimage());
viewHolder.setImage(model.getImage());
viewHolder.myView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent editIntent = new Intent((getActivity()),postEdit.class);
editIntent.putExtra("PostKey",postKey);
startActivity(editIntent);
}
});
}
};
postList.setAdapter(firebaseRecyclerAdapter);
}
public static class postsGetInfoViewHolder extends RecyclerView.ViewHolder {
View myView;
public postsGetInfoViewHolder(View itemView) {
super(itemView);
myView = itemView;
}
/**/public void setUsername(String username){
TextView Username = (TextView) myView.findViewById(R.id.txtName);
Username.setText(username);
}
public void setProfileImage(String profileImage){
CircularImageView profile = (CircularImageView) myView.findViewById(R.id.profileImage);
Picasso.get().load(profileImage).placeholder(R.drawable.ic_wifi).into(profile);
}
public void setTime(String time){
TextView postTime = (TextView) myView.findViewById(R.id.txtTime);
postTime.setText(time);
}
public void setDate(String date){
TextView postDate = (TextView) myView.findViewById(R.id.txtDate);
postDate.setText(date);
}
public void setDescription(String description){
TextView postDescription = (TextView) myView.findViewById(R.id.txtSurname);
postDescription.setText(description);
}
/**/ public void setImage(String image){
ImageView postImage = (ImageView) myView.findViewById(R.id.imgPost);
Picasso.get().load(image).placeholder(R.drawable.ic_wifi).into(postImage);
}
}
Gradle:
implementation 'com.google.firebase:firebase-auth:11.0.2'
implementation 'com.google.firebase:firebase-database:11.0.2'
implementation 'com.google.firebase:firebase-storage:11.0.2'
implementation 'com.google.android.gms:play-services-auth:11.0.2'
implementation 'com.firebaseui:firebase-ui-database:2.1.1'
Существует более новая библиотека, но я уже кодировал свое приложение, используя их.