我有这个帮助类构造一个pojo。我正在使用firebase来获取对象并创建一个对象。
问题:这个类被大量调用,我认为不继续创建它的实例会更经济。
我自己尝试过,但是尴尬地失败了,还在学习。
THE CLASS
public abstract class FetchPost implements ValueEventListener {
public abstract void event(Post post);
private Post post;
private String postId;
public FetchPost(String postId) {
AsyncTask.execute(() -> {
this.postId = postId;
Nodes.appRef("/posts/" + postId).addListenerForSingleValueEvent(this);
});
}
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
post = dataSnapshot.getValue(Post.class);
getUser();
}
@Override
public void onCancelled(DatabaseError e) {
}
private void getUser() {
Nodes.Users.profile(post.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot d) {
User user = d.getValue(User.class);
post.setUser(user);
getSound();
}
@Override
public void onCancelled(DatabaseError e) {
}
});
}
public void getSound() {
Nodes.appRef("sounds/" + post.getObjectId()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Sound sound = dataSnapshot.getValue(Sound.class);
sound.setSoundId(dataSnapshot.getKey());
post.setSound(sound);
event(post);
}
@Override
public void onCancelled(DatabaseError e) {
}
});
}
}
我如何构建这个类,以便我可以将Dagger用作单身?
我尝试使用带有接口的普通类来代替抽象方法,但每当我使用接口作为事件监听器调用FetchPost()
时,所有先前的调用都将被替换。